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 Pragma(PragmaStatement),
56 ShowTables(ShowTablesStatement),
57 ShowViews(ShowViewsStatement),
58 ShowCreateTable(ShowCreateTableStatement),
59 ShowCreateView(ShowCreateViewStatement),
60 ShowIndexes(ShowIndexesStatement),
61 Describe(DescribeStatement),
62 Expression(ExpressionStatement),
63 Explain(ExplainStatement),
64 Analyze(AnalyzeStatement),
65 Vacuum(VacuumStatement),
66 Copy(CopyStatement),
67 Call(Box<CallStatement>),
68 CreateRoutine(Box<CreateRoutineStatement>),
69 CreateTrigger(Box<CreateTriggerStatement>),
70 CreateJob(Box<CreateJobStatement>),
71 DropRoutine(Box<DropRoutineStatement>),
72 DropTrigger(Box<DropTriggerStatement>),
73 DropJob(Box<DropJobStatement>),
74 AlterJob(Box<AlterJobStatement>),
75 CreateSchema(CreateSchemaStatement),
76 CreatePrincipal(CreatePrincipalStatement),
77 CreateRole(CreateRoleStatement),
78 AlterSecuritySubject(AlterSecuritySubjectStatement),
79 DropSecuritySubject(DropSecuritySubjectStatement),
80 Grant(Box<GrantStatement>),
81 Revoke(Box<RevokeStatement>),
82 AlterOwner(Box<AlterOwnerStatement>),
83}
84
85impl fmt::Display for Statement {
86 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
87 match self {
88 Statement::Select(s) => write!(f, "{}", s),
89 Statement::Insert(s) => write!(f, "{}", s),
90 Statement::Update(s) => write!(f, "{}", s),
91 Statement::Delete(s) => write!(f, "{}", s),
92 Statement::Truncate(s) => write!(f, "{}", s),
93 Statement::CreateTable(s) => write!(f, "{}", s),
94 Statement::DropTable(s) => write!(f, "{}", s),
95 Statement::AlterTable(s) => write!(f, "{}", s),
96 Statement::AlterIndex(s) => write!(f, "{}", s),
97 Statement::CreateIndex(s) => write!(f, "{}", s),
98 Statement::DropIndex(s) => write!(f, "{}", s),
99 Statement::CreateView(s) => write!(f, "{}", s),
100 Statement::DropView(s) => write!(f, "{}", s),
101 Statement::CreateExtension(s) => write!(f, "{}", s),
102 Statement::DropExtension(s) => write!(f, "{}", s),
103 Statement::CreateExternalType(s) => write!(f, "{}", s),
104 Statement::DropExternalType(s) => write!(f, "{}", s),
105 Statement::CreateOperator(s) => write!(f, "{}", s),
106 Statement::DropOperator(s) => write!(f, "{}", s),
107 Statement::CreateOperatorClass(s) => write!(f, "{}", s),
108 Statement::DropOperatorClass(s) => write!(f, "{}", s),
109 Statement::CreatePlannerSupport(s) => write!(f, "{}", s),
110 Statement::DropPlannerSupport(s) => write!(f, "{}", s),
111 Statement::Begin(s) => write!(f, "{}", s),
112 Statement::Commit(s) => write!(f, "{}", s),
113 Statement::Rollback(s) => write!(f, "{}", s),
114 Statement::Savepoint(s) => write!(f, "{}", s),
115 Statement::ReleaseSavepoint(s) => write!(f, "{}", s),
116 Statement::Set(s) => write!(f, "{}", s),
117 Statement::Pragma(s) => write!(f, "{}", s),
118 Statement::ShowTables(s) => write!(f, "{}", s),
119 Statement::ShowViews(s) => write!(f, "{}", s),
120 Statement::ShowCreateTable(s) => write!(f, "{}", s),
121 Statement::ShowCreateView(s) => write!(f, "{}", s),
122 Statement::ShowIndexes(s) => write!(f, "{}", s),
123 Statement::Describe(s) => write!(f, "{}", s),
124 Statement::Expression(s) => write!(f, "{}", s),
125 Statement::Explain(s) => write!(f, "{}", s),
126 Statement::Analyze(s) => write!(f, "{}", s),
127 Statement::Vacuum(s) => write!(f, "{}", s),
128 Statement::Copy(s) => write!(f, "{}", s),
129 Statement::Call(s) => write!(f, "{}", s),
130 Statement::CreateRoutine(s) => write!(f, "{}", s),
131 Statement::CreateTrigger(s) => write!(f, "{}", s),
132 Statement::CreateJob(s) => write!(f, "{}", s),
133 Statement::DropRoutine(s) => write!(f, "{}", s),
134 Statement::DropTrigger(s) => write!(f, "{}", s),
135 Statement::DropJob(s) => write!(f, "{}", s),
136 Statement::AlterJob(s) => write!(f, "{}", s),
137 Statement::CreateSchema(s) => write!(f, "{}", s),
138 Statement::CreatePrincipal(s) => write!(f, "{}", s),
139 Statement::CreateRole(s) => write!(f, "{}", s),
140 Statement::AlterSecuritySubject(s) => write!(f, "{}", s),
141 Statement::DropSecuritySubject(s) => write!(f, "{}", s),
142 Statement::Grant(s) => write!(f, "{}", s),
143 Statement::Revoke(s) => write!(f, "{}", s),
144 Statement::AlterOwner(s) => write!(f, "{}", s),
145 }
146 }
147}
148
149#[derive(Debug, Clone, PartialEq)]
151pub struct Program {
152 pub statements: Vec<Statement>,
153}
154
155impl fmt::Display for Program {
156 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
157 for stmt in &self.statements {
158 write!(f, "{};", stmt)?;
159 }
160 Ok(())
161 }
162}