pub enum Statement {
Query(QueryRef),
CreateTable(CreateTableRef),
CreateView(CreateViewRef),
DropTable(DropTableRef),
Insert(InsertRef),
Set(SettingRef),
Reset(SettingRef),
Explain {
query: QueryRef,
analyze: bool,
},
}Expand description
One statement.
Seven of the twenty seven the grammar reaches. The rest are a transform error naming the rule
rather than a variant that nothing fills in, so that adding one is a compile error somewhere
useful rather than a silent todo!().
Variants§
Query(QueryRef)
A query, meaning a SELECT or a set operation over two of them.
CreateTable(CreateTableRef)
CREATE TABLE.
CreateView(CreateViewRef)
CREATE VIEW.
DropTable(DropTableRef)
DROP TABLE or DROP VIEW, which are one rule in the grammar and one statement here.
Insert(InsertRef)
INSERT INTO.
Set(SettingRef)
SET name = value.
Reset(SettingRef)
RESET name, which is the same shape with nothing on the right of it.
Explain
EXPLAIN over a query, and whether ANALYZE was asked for.
The query rather than a statement, because the grammar lets every statement be explained
and a plan is the only thing there is to show. EXPLAIN INSERT is a refusal rather than a
plan of the source, since the source is not what the statement does.
ANALYZE means the query is run and the plan is printed with what happened on it, so it is
a flag on the same statement rather than a statement of its own. Everything between the
parser and the printer is the same either way, which is the point: the analyzed plan has to
be the plan that ran.