databend_common_ast/ast/statements/
columns.rs1use std::fmt::Display;
16use std::fmt::Formatter;
17
18use derive_visitor::Drive;
19use derive_visitor::DriveMut;
20
21use crate::ast::Identifier;
22use crate::ast::ShowLimit;
23
24#[derive(Debug, Clone, PartialEq, Drive, DriveMut)]
25pub struct ShowColumnsStmt {
26 pub catalog: Option<Identifier>,
27 pub database: Option<Identifier>,
28 pub table: Identifier,
29 pub full: bool,
30 pub limit: Option<ShowLimit>,
31}
32
33impl Display for ShowColumnsStmt {
34 fn fmt(&self, f: &mut Formatter) -> std::fmt::Result {
35 write!(f, "SHOW")?;
36 if self.full {
37 write!(f, " FULL")?;
38 }
39 write!(f, " COLUMNS FROM {}", self.table)?;
40
41 if let Some(database) = &self.database {
42 write!(f, " FROM ")?;
43 if let Some(catalog) = &self.catalog {
44 write!(f, "{catalog}.",)?;
45 }
46 write!(f, "{database}")?;
47 }
48
49 if let Some(limit) = &self.limit {
50 write!(f, " {limit}")?;
51 }
52
53 Ok(())
54 }
55}