Skip to main content

glaredb_parser/
statement.rs

1use serde::{Deserialize, Serialize};
2
3use crate::ast::{
4    Attach,
5    CopyTo,
6    CreateSchema,
7    CreateTable,
8    CreateView,
9    Describe,
10    Detach,
11    DiscardStatement,
12    DropStatement,
13    ExplainNode,
14    Insert,
15    QueryNode,
16    ResetVariable,
17    SetVariable,
18    Show,
19};
20use crate::meta::{AstMeta, Raw};
21
22pub type RawStatement = Statement<Raw>;
23
24#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
25pub enum Statement<T: AstMeta> {
26    Attach(Attach<T>),
27    Detach(Detach<T>),
28
29    Explain(ExplainNode<T>),
30
31    /// COPY <table> TO <file>
32    CopyTo(CopyTo<T>),
33
34    /// DESCRIBE <table>
35    /// DESCRIBE <query>
36    Describe(Describe<T>),
37
38    /// SELECT/VALUES
39    Query(QueryNode<T>),
40
41    /// CREATE TABLE ...
42    CreateTable(CreateTable<T>),
43
44    /// CREATE SCHEMA ...
45    CreateSchema(CreateSchema<T>),
46
47    /// CREATE VIEW ...
48    CreateView(CreateView<T>),
49
50    /// DROP ...
51    Drop(DropStatement<T>),
52
53    /// INSERT INTO ...
54    Insert(Insert<T>),
55
56    /// SET <variable> TO <value>
57    SetVariable(SetVariable<T>),
58
59    /// SHOW <variable>
60    /// SHOW DATABASES
61    /// ...
62    Show(Show<T>),
63
64    /// RESET <variable>
65    ResetVariable(ResetVariable<T>),
66
67    /// DISCARD ...
68    Discard(DiscardStatement),
69}