1mod display;
2
3use super::*;
4#[derive(Debug, Clone, PartialEq, Eq, Hash)]
7#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
8pub enum Statement {
9 Analyze(Analyze),
11 Truncate(Truncate),
13 Msck(Msck),
15 Query(Box<Query>),
17 Insert(Insert),
19 Directory(Directory),
21 Copy(Copy),
22 Update(Update),
24 Delete(Delete),
26 CreateView(CreateView),
28 CreateTable(Box<CreateTable>),
30 CreateVirtualTable(CreateVirtualTable),
32 CreateIndex(CreateIndex),
34 AlterTable(AlterTable),
36 Drop(Drop),
38 SetVariable(SetVariable),
44 ShowVariable(ShowVariable),
48 ShowCreate(ShowCreate),
52 ShowColumns(ShowColumns),
56 StartTransaction(StartTransaction),
58 SetTransaction(SetTransaction),
60 Commit(Commit),
62 Rollback(Rollback),
64 CreateSchema(CreateSchema),
66 CreateDatabase(CreateDatabase),
68 Assert(Assert),
70 Deallocate(Deallocate),
74 Execute(Execute),
78 Prepare(Prepare),
82 Explain(Explain),
84}
85#[derive(Debug, Clone, PartialEq, Eq, Hash)]
86#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
87pub struct Analyze {
88 pub table_name: ObjectName,
89 pub partitions: Option<Vec<Expr>>,
90 pub for_columns: bool,
91 pub columns: Vec<Ident>,
92 pub cache_metadata: bool,
93 pub noscan: bool,
94 pub compute_statistics: bool,
95}
96#[derive(Debug, Clone, PartialEq, Eq, Hash)]
98#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
99pub struct Truncate {
100 pub table_name: ObjectName,
101 pub partitions: Option<Vec<Expr>>,
102}
103#[derive(Debug, Clone, PartialEq, Eq, Hash)]
105#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
106pub struct Msck {
107 pub table_name: ObjectName,
108 pub repair: bool,
109 pub partition_action: Option<AddDropSync>,
110}
111
112#[derive(Debug, Clone, PartialEq, Eq, Hash)]
113#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
114pub struct Insert {
115 pub or: Option<SqliteOnConflict>,
117 pub table_name: ObjectName,
119 pub columns: Vec<Ident>,
121 pub overwrite: bool,
123 pub source: Box<Query>,
125 pub partitioned: Option<Vec<Expr>>,
127 pub after_columns: Vec<Ident>,
129 pub table: bool,
131}
132#[derive(Debug, Clone, PartialEq, Eq, Hash)]
134#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
135pub struct Directory {
136 pub overwrite: bool,
137 pub local: bool,
138 pub path: String,
139 pub file_format: Option<FileFormat>,
140 pub source: Box<Query>,
141}
142#[derive(Debug, Clone, PartialEq, Eq, Hash)]
143#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
144pub struct Copy {
145 pub table_name: ObjectName,
147 pub columns: Vec<Ident>,
149 pub values: Vec<Option<String>>,
151}
152#[derive(Debug, Clone, PartialEq, Eq, Hash)]
154#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
155pub struct Update {
156 pub table_name: ObjectName,
158 pub assignments: Vec<Assignment>,
160 pub selection: Option<Expr>,
162}
163#[derive(Debug, Clone, PartialEq, Eq, Hash)]
165#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
166pub struct Delete {
167 pub table_name: ObjectName,
169 pub selection: Option<Expr>,
171}
172#[derive(Debug, Clone, PartialEq, Eq, Hash)]
174#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
175pub struct CreateView {
176 pub or_replace: bool,
177 pub materialized: bool,
178 pub name: ObjectName,
180 pub columns: Vec<Ident>,
181 pub query: Box<Query>,
182 pub with_options: Vec<SqlOption>,
183}
184#[derive(Debug, Clone, PartialEq, Eq, Hash)]
187#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
188pub struct CreateTable {
189 pub or_replace: bool,
190 pub temporary: bool,
191 pub external: bool,
192 pub if_not_exists: bool,
193 pub name: ObjectName,
195 pub columns: Vec<ColumnDef>,
197 pub constraints: Vec<TableConstraint>,
198 pub hive_distribution: HiveDistributionStyle,
199 pub hive_formats: Option<HiveFormat>,
200 pub table_properties: Vec<SqlOption>,
201 pub with_options: Vec<SqlOption>,
202 pub file_format: Option<FileFormat>,
203 pub location: Option<String>,
204 pub query: Option<Box<Query>>,
205 pub without_rowid: bool,
206 pub like: Option<ObjectName>,
207}
208#[derive(Debug, Clone, PartialEq, Eq, Hash)]
210#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
211pub struct CreateVirtualTable {
212 pub name: ObjectName,
213 pub if_not_exists: bool,
214 pub module_name: Ident,
215 pub module_args: Vec<Ident>,
216}
217#[derive(Debug, Clone, PartialEq, Eq, Hash)]
219#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
220pub struct CreateIndex {
221 pub name: ObjectName,
223 pub table_name: ObjectName,
224 pub columns: Vec<OrderByExpr>,
225 pub unique: bool,
226 pub if_not_exists: bool,
227}
228#[derive(Debug, Clone, PartialEq, Eq, Hash)]
230#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
231pub struct AlterTable {
232 pub name: ObjectName,
234 pub operation: AlterTableOperation,
235}
236#[derive(Debug, Clone, PartialEq, Eq, Hash)]
238#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
239pub struct Drop {
240 pub object_type: ObjectType,
242 pub if_exists: bool,
244 pub names: Vec<ObjectName>,
246 pub cascade: bool,
249 pub purge: bool,
252}
253#[derive(Debug, Clone, PartialEq, Eq, Hash)]
259#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
260pub struct SetVariable {
261 pub local: bool,
262 pub hivevar: bool,
263 pub variable: Ident,
264 pub value: Vec<SetVariableValue>,
265}
266#[derive(Debug, Clone, PartialEq, Eq, Hash)]
270#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
271pub struct ShowVariable {
272 pub variable: Vec<Ident>,
273}
274#[derive(Debug, Clone, PartialEq, Eq, Hash)]
278#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
279pub struct ShowCreate {
280 pub obj_type: ShowCreateObject,
281 pub obj_name: ObjectName,
282}
283#[derive(Debug, Clone, PartialEq, Eq, Hash)]
287#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
288pub struct ShowColumns {
289 pub extended: bool,
290 pub full: bool,
291 pub table_name: ObjectName,
292 pub filter: Option<ShowStatementFilter>,
293}
294#[derive(Debug, Clone, PartialEq, Eq, Hash)]
296#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
297pub struct StartTransaction {
298 pub modes: Vec<TransactionMode>,
299}
300#[derive(Debug, Clone, PartialEq, Eq, Hash)]
302#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
303pub struct SetTransaction {
304 pub modes: Vec<TransactionMode>,
305}
306#[derive(Debug, Clone, PartialEq, Eq, Hash)]
308#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
309pub struct Commit {
310 pub chain: bool,
311}
312#[derive(Debug, Clone, PartialEq, Eq, Hash)]
314#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
315pub struct Rollback {
316 pub chain: bool,
317}
318#[derive(Debug, Clone, PartialEq, Eq, Hash)]
320#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
321pub struct CreateSchema {
322 pub schema_name: ObjectName,
323 pub if_not_exists: bool,
324}
325#[derive(Debug, Clone, PartialEq, Eq, Hash)]
327#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
328pub struct CreateDatabase {
329 pub db_name: ObjectName,
330 pub if_not_exists: bool,
331 pub location: Option<String>,
332 pub managed_location: Option<String>,
333}
334#[derive(Debug, Clone, PartialEq, Eq, Hash)]
336#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
337pub struct Assert {
338 pub condition: Expr,
339 pub message: Option<Expr>,
340}
341#[derive(Debug, Clone, PartialEq, Eq, Hash)]
345#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
346pub struct Deallocate {
347 pub name: Ident,
348 pub prepare: bool,
349}
350#[derive(Debug, Clone, PartialEq, Eq, Hash)]
354#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
355pub struct Execute {
356 pub name: Ident,
357 pub parameters: Vec<Expr>,
358}
359#[derive(Debug, Clone, PartialEq, Eq, Hash)]
363#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
364pub struct Prepare {
365 pub name: Ident,
366 pub data_types: Vec<DataType>,
367 pub statement: Box<Statement>,
368}
369#[derive(Debug, Clone, PartialEq, Eq, Hash)]
371#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
372pub struct Explain {
373 pub analyze: bool,
375 pub verbose: bool,
377 pub statement: Box<Statement>,
379}