pub enum Statement {
Show 66 variants
Analyze {
table_name: ObjectName,
partitions: Option<Vec<Expr>>,
for_columns: bool,
columns: Vec<Ident>,
cache_metadata: bool,
noscan: bool,
compute_statistics: bool,
},
Truncate {
table_name: ObjectName,
partitions: Option<Vec<Expr>>,
table: bool,
},
Msck {
table_name: ObjectName,
repair: bool,
partition_action: Option<AddDropSync>,
},
Query(Box<Query>),
Insert {
or: Option<SqliteOnConflict>,
ignore: bool,
into: bool,
table_name: ObjectName,
columns: Vec<Ident>,
overwrite: bool,
source: Box<Query>,
partitioned: Option<Vec<Expr>>,
after_columns: Vec<Ident>,
table: bool,
on: Option<OnInsert>,
returning: Option<Vec<SelectItem>>,
},
Directory {
overwrite: bool,
local: bool,
path: String,
file_format: Option<FileFormat>,
source: Box<Query>,
},
Copy {
source: CopySource,
to: bool,
target: CopyTarget,
options: Vec<CopyOption>,
legacy_options: Vec<CopyLegacyOption>,
values: Vec<Option<String>>,
},
CopyIntoSnowflake {
into: ObjectName,
from_stage: ObjectName,
from_stage_alias: Option<Ident>,
stage_params: StageParamsObject,
from_transformations: Option<Vec<StageLoadSelectItem>>,
files: Option<Vec<String>>,
pattern: Option<String>,
file_format: DataLoadingOptions,
copy_options: DataLoadingOptions,
validation_mode: Option<String>,
},
Close {
cursor: CloseCursor,
},
Update {
table: TableWithJoins,
assignments: Vec<Assignment>,
from: Option<TableWithJoins>,
selection: Option<Expr>,
returning: Option<Vec<SelectItem>>,
},
Delete {
tables: Vec<ObjectName>,
from: Vec<TableWithJoins>,
using: Option<Vec<TableWithJoins>>,
selection: Option<Expr>,
returning: Option<Vec<SelectItem>>,
order_by: Vec<OrderByExpr>,
limit: Option<Expr>,
},
CreateView {
or_replace: bool,
materialized: bool,
name: ObjectName,
columns: Vec<Ident>,
query: Box<Query>,
with_options: Vec<SqlOption>,
cluster_by: Vec<Ident>,
with_no_schema_binding: bool,
if_not_exists: bool,
temporary: bool,
},
CreateTable {Show 28 fields
or_replace: bool,
temporary: bool,
external: bool,
global: Option<bool>,
if_not_exists: bool,
transient: bool,
name: ObjectName,
columns: Vec<ColumnDef>,
constraints: Vec<TableConstraint>,
hive_distribution: HiveDistributionStyle,
hive_formats: Option<HiveFormat>,
table_properties: Vec<SqlOption>,
with_options: Vec<SqlOption>,
file_format: Option<FileFormat>,
location: Option<String>,
query: Option<Box<Query>>,
without_rowid: bool,
like: Option<ObjectName>,
clone: Option<ObjectName>,
engine: Option<String>,
comment: Option<String>,
auto_increment_offset: Option<u32>,
default_charset: Option<String>,
collation: Option<String>,
on_commit: Option<OnCommit>,
on_cluster: Option<String>,
order_by: Option<Vec<Ident>>,
strict: bool,
},
CreateVirtualTable {
name: ObjectName,
if_not_exists: bool,
module_name: Ident,
module_args: Vec<Ident>,
},
CreateIndex {
name: Option<ObjectName>,
table_name: ObjectName,
using: Option<Ident>,
columns: Vec<OrderByExpr>,
unique: bool,
concurrently: bool,
if_not_exists: bool,
include: Vec<Ident>,
nulls_distinct: Option<bool>,
predicate: Option<Expr>,
},
CreateRole {Show 18 fields
names: Vec<ObjectName>,
if_not_exists: bool,
login: Option<bool>,
inherit: Option<bool>,
bypassrls: Option<bool>,
password: Option<Password>,
superuser: Option<bool>,
create_db: Option<bool>,
create_role: Option<bool>,
replication: Option<bool>,
connection_limit: Option<Expr>,
valid_until: Option<Expr>,
in_role: Vec<Ident>,
in_group: Vec<Ident>,
role: Vec<Ident>,
user: Vec<Ident>,
admin: Vec<Ident>,
authorization_owner: Option<ObjectName>,
},
AlterTable {
name: ObjectName,
if_exists: bool,
only: bool,
operations: Vec<AlterTableOperation>,
},
AlterIndex {
name: ObjectName,
operation: AlterIndexOperation,
},
AlterView {
name: ObjectName,
columns: Vec<Ident>,
query: Box<Query>,
with_options: Vec<SqlOption>,
},
AlterRole {
name: Ident,
operation: AlterRoleOperation,
},
AttachDatabase {
schema_name: Ident,
database_file_name: Expr,
database: bool,
},
Drop {
object_type: ObjectType,
if_exists: bool,
names: Vec<ObjectName>,
cascade: bool,
restrict: bool,
purge: bool,
temporary: bool,
},
DropFunction {
if_exists: bool,
func_desc: Vec<DropFunctionDesc>,
option: Option<ReferentialAction>,
},
Declare {
name: Ident,
binary: bool,
sensitive: Option<bool>,
scroll: Option<bool>,
hold: Option<bool>,
query: Box<Query>,
},
Fetch {
name: Ident,
direction: FetchDirection,
into: Option<ObjectName>,
},
Discard {
object_type: DiscardObject,
},
SetRole {
context_modifier: ContextModifier,
role_name: Option<Ident>,
},
SetVariable {
local: bool,
hivevar: bool,
variable: ObjectName,
value: Vec<Expr>,
},
SetTimeZone {
local: bool,
value: Expr,
},
SetNames {
charset_name: String,
collation_name: Option<String>,
},
SetNamesDefault {},
ShowFunctions {
filter: Option<ShowStatementFilter>,
},
ShowVariable {
variable: Vec<Ident>,
},
ShowVariables {
filter: Option<ShowStatementFilter>,
},
ShowCreate {
obj_type: ShowCreateObject,
obj_name: ObjectName,
},
ShowColumns {
extended: bool,
full: bool,
table_name: ObjectName,
filter: Option<ShowStatementFilter>,
},
ShowTables {
extended: bool,
full: bool,
db_name: Option<Ident>,
filter: Option<ShowStatementFilter>,
},
ShowCollation {
filter: Option<ShowStatementFilter>,
},
Use {
db_name: Ident,
},
StartTransaction {
modes: Vec<TransactionMode>,
begin: bool,
},
SetTransaction {
modes: Vec<TransactionMode>,
snapshot: Option<Value>,
session: bool,
},
Comment {
object_type: CommentObject,
object_name: ObjectName,
comment: Option<String>,
if_exists: bool,
},
Commit {
chain: bool,
},
Rollback {
chain: bool,
},
CreateSchema {
schema_name: SchemaName,
if_not_exists: bool,
},
CreateDatabase {
db_name: ObjectName,
if_not_exists: bool,
location: Option<String>,
managed_location: Option<String>,
},
CreateFunction {
or_replace: bool,
temporary: bool,
name: ObjectName,
args: Option<Vec<OperateFunctionArg>>,
return_type: Option<DataType>,
params: CreateFunctionBody,
},
CreateProcedure {
or_alter: bool,
name: ObjectName,
params: Option<Vec<ProcedureParam>>,
body: Vec<Statement>,
},
CreateMacro {
or_replace: bool,
temporary: bool,
name: ObjectName,
args: Option<Vec<MacroArg>>,
definition: MacroDefinition,
},
CreateStage {
or_replace: bool,
temporary: bool,
if_not_exists: bool,
name: ObjectName,
stage_params: StageParamsObject,
directory_table_params: DataLoadingOptions,
file_format: DataLoadingOptions,
copy_options: DataLoadingOptions,
comment: Option<String>,
},
Assert {
condition: Expr,
message: Option<Expr>,
},
Grant {
privileges: Privileges,
objects: GrantObjects,
grantees: Vec<Ident>,
with_grant_option: bool,
granted_by: Option<Ident>,
},
Revoke {
privileges: Privileges,
objects: GrantObjects,
grantees: Vec<Ident>,
granted_by: Option<Ident>,
cascade: bool,
},
Deallocate {
name: Ident,
prepare: bool,
},
Execute {
name: Ident,
parameters: Vec<Expr>,
},
Prepare {
name: Ident,
data_types: Vec<DataType>,
statement: Box<Statement>,
},
Kill {
modifier: Option<KillType>,
id: u64,
},
ExplainTable {
describe_alias: bool,
table_name: ObjectName,
},
Explain {
describe_alias: bool,
analyze: bool,
verbose: bool,
statement: Box<Statement>,
format: Option<AnalyzeFormat>,
},
Savepoint {
name: Ident,
},
Merge {
into: bool,
table: TableFactor,
source: TableFactor,
on: Box<Expr>,
clauses: Vec<MergeClause>,
},
Cache {
table_flag: Option<ObjectName>,
table_name: ObjectName,
has_as: bool,
options: Vec<SqlOption>,
query: Option<Query>,
},
UNCache {
table_name: ObjectName,
if_exists: bool,
},
CreateSequence {
temporary: bool,
if_not_exists: bool,
name: ObjectName,
data_type: Option<DataType>,
sequence_options: Vec<SequenceOptions>,
owned_by: Option<ObjectName>,
},
CreateType {
name: ObjectName,
representation: UserDefinedTypeRepresentation,
},
Pragma {
name: ObjectName,
value: Option<Value>,
is_eq: bool,
},
}
Expand description
A top-level statement (SELECT, INSERT, CREATE, etc.)
Variants§
Analyze
Fields
table_name: ObjectName
Analyze (Hive)
Truncate
Truncate (Hive)
Msck
Msck (Hive)
Query(Box<Query>)
SELECT
Insert
Fields
or: Option<SqliteOnConflict>
Only for Sqlite
table_name: ObjectName
TABLE
returning: Option<Vec<SelectItem>>
RETURNING
INSERT
Directory
Copy
Fields
source: CopySource
The source of ‘COPY TO’, or the target of ‘COPY FROM’
target: CopyTarget
The target of ‘COPY TO’, or the source of ‘COPY FROM’
options: Vec<CopyOption>
WITH options (from PostgreSQL version 9.0)
legacy_options: Vec<CopyLegacyOption>
WITH options (before PostgreSQL version 9.0)
CopyIntoSnowflake
Fields
into: ObjectName
from_stage: ObjectName
stage_params: StageParamsObject
from_transformations: Option<Vec<StageLoadSelectItem>>
file_format: DataLoadingOptions
copy_options: DataLoadingOptions
COPY INTO
See https://docs.snowflake.com/en/sql-reference/sql/copy-into-table Copy Into syntax available for Snowflake is different than the one implemented in Postgres. Although they share common prefix, it is reasonable to implement them in different enums. This can be refactored later once custom dialects are allowed to have custom Statements.
Close
Fields
cursor: CloseCursor
Cursor name
Close - closes the portal underlying an open cursor.
Update
Fields
table: TableWithJoins
TABLE
assignments: Vec<Assignment>
Column assignments
from: Option<TableWithJoins>
Table which provide value to be set
returning: Option<Vec<SelectItem>>
RETURNING
UPDATE
Delete
Fields
tables: Vec<ObjectName>
Multi tables delete are supported in mysql
from: Vec<TableWithJoins>
FROM
using: Option<Vec<TableWithJoins>>
USING (Snowflake, Postgres, MySQL)
returning: Option<Vec<SelectItem>>
RETURNING
order_by: Vec<OrderByExpr>
ORDER BY (MySQL)
DELETE
CreateView
Fields
name: ObjectName
View name
with_no_schema_binding: bool
if true, has RedShift [WITH NO SCHEMA BINDING
] clause https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_VIEW.html
if_not_exists: bool
if true, has SQLite IF NOT EXISTS
clause https://www.sqlite.org/lang_createview.html
temporary: bool
if true, has SQLite TEMP
or TEMPORARY
clause https://www.sqlite.org/lang_createview.html
CREATE VIEW
CreateTable
Fields
name: ObjectName
Table name
constraints: Vec<TableConstraint>
hive_distribution: HiveDistributionStyle
hive_formats: Option<HiveFormat>
file_format: Option<FileFormat>
like: Option<ObjectName>
clone: Option<ObjectName>
on_cluster: Option<String>
ClickHouse “ON CLUSTER” clause: https://clickhouse.com/docs/en/sql-reference/distributed-ddl/
order_by: Option<Vec<Ident>>
ClickHouse “ORDER BY “ clause. Note that omitted ORDER BY is different than empty (represented as ()), the latter meaning “no sorting”. https://clickhouse.com/docs/en/sql-reference/statements/create/table/
CREATE TABLE
CreateVirtualTable
SQLite’s CREATE VIRTUAL TABLE .. USING <module_name> (<module_args>)
CreateIndex
CREATE INDEX
CreateRole
CREATE ROLE See postgres
AlterTable
ALTER TABLE
AlterIndex
AlterView
Fields
name: ObjectName
View name
ALTER VIEW
AlterRole
ALTER ROLE
AttachDatabase
Fields
ATTACH DATABASE ‘path/to/file’ AS alias (SQLite-specific)
Drop
Fields
object_type: ObjectType
The type of the object to drop: TABLE, VIEW, etc.
names: Vec<ObjectName>
One or more objects to drop. (ANSI SQL requires exactly one.)
cascade: bool
Whether CASCADE
was specified. This will be false
when
RESTRICT
or no drop behavior at all was specified.
restrict: bool
Whether RESTRICT
was specified. This will be false
when
CASCADE
or no drop behavior at all was specified.
DROP
DropFunction
Fields
func_desc: Vec<DropFunctionDesc>
One or more function to drop
option: Option<ReferentialAction>
CASCADE
or RESTRICT
DROP Function
Declare
Fields
DECLARE - Declaring Cursor Variables
Note: this is a PostgreSQL-specific statement, but may also compatible with other SQL.
Fetch
Fields
direction: FetchDirection
into: Option<ObjectName>
Optional, It’s possible to fetch rows form cursor to the table
FETCH - retrieve rows from a query using a cursor
Note: this is a PostgreSQL-specific statement, but may also compatible with other SQL.
Discard
Fields
object_type: DiscardObject
DISCARD [ ALL | PLANS | SEQUENCES | TEMPORARY | TEMP ]
Note: this is a PostgreSQL-specific statement, but may also compatible with other SQL.
SetRole
Fields
context_modifier: ContextModifier
Non-ANSI optional identifier to inform if the role is defined inside the current session (SESSION
) or transaction (LOCAL
).
SET [ SESSION | LOCAL ]
ROLE role_name. Examples: ANSI, Postgresql, MySQL, and Oracle.
SetVariable
SET <variable>
Note: this is not a standard SQL statement, but it is supported by at least MySQL and PostgreSQL. Not all MySQL-specific syntatic forms are supported yet.
SetTimeZone
SET TIME ZONE <value>
Note: this is a PostgreSQL-specific statements
SET TIME ZONE <value>
is an alias for SET timezone TO <value>
in PostgreSQL
SetNames
SET NAMES ‘charset_name’ [COLLATE ‘collation_name’]
Note: this is a MySQL-specific statement.
SetNamesDefault
Fields
SET NAMES DEFAULT
Note: this is a MySQL-specific statement.
ShowFunctions
Fields
filter: Option<ShowStatementFilter>
SHOW FUNCTIONS
Note: this is a Presto-specific statement.
ShowVariable
SHOW <variable>
Note: this is a PostgreSQL-specific statement.
ShowVariables
Fields
filter: Option<ShowStatementFilter>
SHOW VARIABLES
Note: this is a MySQL-specific statement.
ShowCreate
SHOW CREATE TABLE
Note: this is a MySQL-specific statement.
ShowColumns
SHOW COLUMNS
Note: this is a MySQL-specific statement.
ShowTables
SHOW TABLES
Note: this is a MySQL-specific statement.
ShowCollation
Fields
filter: Option<ShowStatementFilter>
SHOW COLLATION
Note: this is a MySQL-specific statement.
Use
USE
Note: This is a MySQL-specific statement.
StartTransaction
START [ TRANSACTION | WORK ] | START TRANSACTION } ...
If begin
is false.
BEGIN [ TRANSACTION | WORK ] | START TRANSACTION } ...
If begin
is true
SetTransaction
SET TRANSACTION ...
Comment
Fields
object_type: CommentObject
object_name: ObjectName
if_exists: bool
An optional IF EXISTS
clause. (Non-standard.)
See https://docs.snowflake.com/en/sql-reference/sql/comment
COMMENT ON ...
Note: this is a PostgreSQL-specific statement.
Commit
COMMIT [ TRANSACTION | WORK ] [ AND [ NO ] CHAIN ]
Rollback
ROLLBACK [ TRANSACTION | WORK ] [ AND [ NO ] CHAIN ]
CreateSchema
Fields
schema_name: SchemaName
<schema name> | AUTHORIZATION <schema authorization identifier> | <schema name> AUTHORIZATION <schema authorization identifier>
CREATE SCHEMA
CreateDatabase
Fields
db_name: ObjectName
CREATE DATABASE
CreateFunction
Fields
name: ObjectName
args: Option<Vec<OperateFunctionArg>>
params: CreateFunctionBody
Optional parameters.
CreateProcedure
CREATE PROCEDURE
CreateMacro
CreateStage
Fields
name: ObjectName
stage_params: StageParamsObject
directory_table_params: DataLoadingOptions
file_format: DataLoadingOptions
copy_options: DataLoadingOptions
CREATE STAGE
See https://docs.snowflake.com/en/sql-reference/sql/create-stage
Assert
ASSERT <condition> [AS <message>]
Grant
GRANT privileges ON objects TO grantees
Revoke
REVOKE privileges ON objects FROM grantees
Deallocate
DEALLOCATE [ PREPARE ] { name | ALL }
Note: this is a PostgreSQL-specific statement.
Execute
EXECUTE name [ ( parameter [, ...] ) ]
Note: this is a PostgreSQL-specific statement.
Prepare
PREPARE name [ ( data_type [, ...] ) ] AS statement
Note: this is a PostgreSQL-specific statement.
Kill
KILL [CONNECTION | QUERY | MUTATION]
See https://clickhouse.com/docs/ru/sql-reference/statements/kill/ See https://dev.mysql.com/doc/refman/8.0/en/kill.html
ExplainTable
Fields
table_name: ObjectName
Table name
EXPLAIN TABLE Note: this is a MySQL-specific statement. See https://dev.mysql.com/doc/refman/8.0/en/explain.html
Explain
Fields
format: Option<AnalyzeFormat>
Optional output format of explain
EXPLAIN / DESCRIBE for select_statement
Savepoint
SAVEPOINT – define a new savepoint within the current transaction
Merge
Cache
CACHE [ FLAG ] TABLE <table_name> [ OPTIONS('K1' = 'V1', 'K2' = V2) ] [ AS ] [ <query> ]
.
See Spark SQL docs for more details.
UNCache
UNCACHE TABLE [ IF EXISTS ] <table_name>
CreateSequence
CreateSequence – define a new sequence CREATE [ { TEMPORARY | TEMP } ] SEQUENCE [ IF NOT EXISTS ] <sequence_name>
CreateType
CREATE TYPE <name>
Pragma
Trait Implementations§
source§impl Ord for Statement
impl Ord for Statement
source§impl PartialEq for Statement
impl PartialEq for Statement
source§impl PartialOrd for Statement
impl PartialOrd for Statement
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresource§impl TryFrom<Statement> for CreateTableBuilder
impl TryFrom<Statement> for CreateTableBuilder
§type Error = ParserError
type Error = ParserError
source§fn try_from(
stmt: Statement
) -> Result<CreateTableBuilder, <CreateTableBuilder as TryFrom<Statement>>::Error>
fn try_from( stmt: Statement ) -> Result<CreateTableBuilder, <CreateTableBuilder as TryFrom<Statement>>::Error>
source§impl VisitMut for Statement
impl VisitMut for Statement
fn visit<V>(&mut self, visitor: &mut V) -> ControlFlow<<V as VisitorMut>::Break>where V: VisitorMut,
impl Eq for Statement
impl StructuralEq for Statement
impl StructuralPartialEq for Statement
Auto Trait Implementations§
impl RefUnwindSafe for Statement
impl Send for Statement
impl Sync for Statement
impl Unpin for Statement
impl UnwindSafe for Statement
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.