1use super::*;
16
17#[derive(Debug, Clone, PartialEq)]
23pub enum Statement {
24 Select(SelectStatement),
25 Insert(InsertStatement),
26 Update(UpdateStatement),
27 Delete(DeleteStatement),
28 Truncate(TruncateStatement),
29 CreateTable(CreateTableStatement),
30 DropTable(DropTableStatement),
31 AlterTable(Box<AlterTableStatement>),
33 AlterIndex(AlterIndexStatement),
34 CreateIndex(CreateIndexStatement),
35 DropIndex(DropIndexStatement),
36 CreateView(CreateViewStatement),
37 DropView(DropViewStatement),
38 CreateExtension(CreateExtensionStatement),
39 DropExtension(DropExtensionStatement),
40 CreateExternalType(CreateExternalTypeStatement),
41 DropExternalType(DropExternalTypeStatement),
42 CreateOperator(Box<CreateOperatorStatement>),
43 DropOperator(Box<DropOperatorStatement>),
44 CreateOperatorClass(Box<CreateOperatorClassStatement>),
45 DropOperatorClass(Box<DropOperatorClassStatement>),
46 CreatePlannerSupport(Box<CreatePlannerSupportStatement>),
47 DropPlannerSupport(Box<DropPlannerSupportStatement>),
48 Begin(BeginStatement),
49 Commit(CommitStatement),
50 Rollback(RollbackStatement),
51 Savepoint(SavepointStatement),
52 ReleaseSavepoint(ReleaseSavepointStatement),
53 Set(Box<SetStatement>),
55 ShowVariable(ShowVariableStatement),
56 Pragma(PragmaStatement),
57 ShowTables(ShowTablesStatement),
58 ShowViews(ShowViewsStatement),
59 ShowCreateTable(ShowCreateTableStatement),
60 ShowCreateView(ShowCreateViewStatement),
61 ShowIndexes(ShowIndexesStatement),
62 Describe(DescribeStatement),
63 Expression(ExpressionStatement),
64 Explain(ExplainStatement),
65 Analyze(AnalyzeStatement),
66 Vacuum(VacuumStatement),
67 Copy(CopyStatement),
68 Call(Box<CallStatement>),
69 CreateRoutine(Box<CreateRoutineStatement>),
70 CreateTrigger(Box<CreateTriggerStatement>),
71 CreateJob(Box<CreateJobStatement>),
72 DropRoutine(Box<DropRoutineStatement>),
73 DropTrigger(Box<DropTriggerStatement>),
74 DropJob(Box<DropJobStatement>),
75 AlterJob(Box<AlterJobStatement>),
76 CreateSchema(CreateSchemaStatement),
77 CreatePrincipal(CreatePrincipalStatement),
78 CreateRole(CreateRoleStatement),
79 AlterSecuritySubject(AlterSecuritySubjectStatement),
80 DropSecuritySubject(DropSecuritySubjectStatement),
81 Grant(Box<GrantStatement>),
82 Revoke(Box<RevokeStatement>),
83 AlterOwner(Box<AlterOwnerStatement>),
84}
85
86impl fmt::Display for Statement {
87 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
88 match self {
89 Statement::Select(s) => write!(f, "{}", s),
90 Statement::Insert(s) => write!(f, "{}", s),
91 Statement::Update(s) => write!(f, "{}", s),
92 Statement::Delete(s) => write!(f, "{}", s),
93 Statement::Truncate(s) => write!(f, "{}", s),
94 Statement::CreateTable(s) => write!(f, "{}", s),
95 Statement::DropTable(s) => write!(f, "{}", s),
96 Statement::AlterTable(s) => write!(f, "{}", s),
97 Statement::AlterIndex(s) => write!(f, "{}", s),
98 Statement::CreateIndex(s) => write!(f, "{}", s),
99 Statement::DropIndex(s) => write!(f, "{}", s),
100 Statement::CreateView(s) => write!(f, "{}", s),
101 Statement::DropView(s) => write!(f, "{}", s),
102 Statement::CreateExtension(s) => write!(f, "{}", s),
103 Statement::DropExtension(s) => write!(f, "{}", s),
104 Statement::CreateExternalType(s) => write!(f, "{}", s),
105 Statement::DropExternalType(s) => write!(f, "{}", s),
106 Statement::CreateOperator(s) => write!(f, "{}", s),
107 Statement::DropOperator(s) => write!(f, "{}", s),
108 Statement::CreateOperatorClass(s) => write!(f, "{}", s),
109 Statement::DropOperatorClass(s) => write!(f, "{}", s),
110 Statement::CreatePlannerSupport(s) => write!(f, "{}", s),
111 Statement::DropPlannerSupport(s) => write!(f, "{}", s),
112 Statement::Begin(s) => write!(f, "{}", s),
113 Statement::Commit(s) => write!(f, "{}", s),
114 Statement::Rollback(s) => write!(f, "{}", s),
115 Statement::Savepoint(s) => write!(f, "{}", s),
116 Statement::ReleaseSavepoint(s) => write!(f, "{}", s),
117 Statement::Set(s) => write!(f, "{}", s),
118 Statement::ShowVariable(s) => write!(f, "{}", s),
119 Statement::Pragma(s) => write!(f, "{}", s),
120 Statement::ShowTables(s) => write!(f, "{}", s),
121 Statement::ShowViews(s) => write!(f, "{}", s),
122 Statement::ShowCreateTable(s) => write!(f, "{}", s),
123 Statement::ShowCreateView(s) => write!(f, "{}", s),
124 Statement::ShowIndexes(s) => write!(f, "{}", s),
125 Statement::Describe(s) => write!(f, "{}", s),
126 Statement::Expression(s) => write!(f, "{}", s),
127 Statement::Explain(s) => write!(f, "{}", s),
128 Statement::Analyze(s) => write!(f, "{}", s),
129 Statement::Vacuum(s) => write!(f, "{}", s),
130 Statement::Copy(s) => write!(f, "{}", s),
131 Statement::Call(s) => write!(f, "{}", s),
132 Statement::CreateRoutine(s) => write!(f, "{}", s),
133 Statement::CreateTrigger(s) => write!(f, "{}", s),
134 Statement::CreateJob(s) => write!(f, "{}", s),
135 Statement::DropRoutine(s) => write!(f, "{}", s),
136 Statement::DropTrigger(s) => write!(f, "{}", s),
137 Statement::DropJob(s) => write!(f, "{}", s),
138 Statement::AlterJob(s) => write!(f, "{}", s),
139 Statement::CreateSchema(s) => write!(f, "{}", s),
140 Statement::CreatePrincipal(s) => write!(f, "{}", s),
141 Statement::CreateRole(s) => write!(f, "{}", s),
142 Statement::AlterSecuritySubject(s) => write!(f, "{}", s),
143 Statement::DropSecuritySubject(s) => write!(f, "{}", s),
144 Statement::Grant(s) => write!(f, "{}", s),
145 Statement::Revoke(s) => write!(f, "{}", s),
146 Statement::AlterOwner(s) => write!(f, "{}", s),
147 }
148 }
149}
150
151#[derive(Debug, Clone, PartialEq)]
153pub struct Program {
154 pub statements: Vec<Statement>,
155}
156
157impl fmt::Display for Program {
158 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
159 for stmt in &self.statements {
160 write!(f, "{};", stmt)?;
161 }
162 Ok(())
163 }
164}