pub enum Statement {
Show 54 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>>, }, Msck { table_name: ObjectName, repair: bool, partition_action: Option<AddDropSync>, }, Query(Box<Query>), Insert { or: Option<SqliteOnConflict>, 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>, }, Directory { overwrite: bool, local: bool, path: String, file_format: Option<FileFormat>, source: Box<Query>, }, Copy { table_name: ObjectName, columns: Vec<Ident>, to: bool, target: CopyTarget, options: Vec<CopyOption>, legacy_options: Vec<CopyLegacyOption>, values: Vec<Option<String>>, }, Close { cursor: CloseCursor, }, Update { table: TableWithJoins, assignments: Vec<Assignment>, from: Option<TableWithJoins>, selection: Option<Expr>, }, Delete { table_name: TableFactor, using: Option<TableFactor>, selection: Option<Expr>, }, CreateView { or_replace: bool, materialized: bool, name: ObjectName, columns: Vec<Ident>, query: Box<Query>, with_options: Vec<SqlOption>, }, CreateTable {
Show 23 fields or_replace: bool, temporary: bool, external: bool, global: Option<bool>, if_not_exists: 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>, default_charset: Option<String>, collation: Option<String>, on_commit: Option<OnCommit>, on_cluster: Option<String>,
}, CreateVirtualTable { name: ObjectName, if_not_exists: bool, module_name: Ident, module_args: Vec<Ident>, }, CreateIndex { name: ObjectName, table_name: ObjectName, columns: Vec<OrderByExpr>, unique: bool, if_not_exists: bool, }, 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, operation: AlterTableOperation, }, Drop { object_type: ObjectType, if_exists: bool, names: Vec<ObjectName>, cascade: bool, restrict: bool, purge: bool, }, 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>, }, 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>, }, SetTransaction { modes: Vec<TransactionMode>, snapshot: Option<Value>, session: bool, }, Comment { object_type: CommentObject, object_name: ObjectName, comment: Option<String>, }, 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 { temporary: bool, name: ObjectName, class_name: String, using: Option<CreateFunctionUsing>, }, 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, },
}
Expand description

A top-level statement (SELECT, INSERT, CREATE, etc.)

Variants

Analyze

Fields

table_name: ObjectName
partitions: Option<Vec<Expr>>
for_columns: bool
columns: Vec<Ident>
cache_metadata: bool
noscan: bool
compute_statistics: bool

Analyze (Hive)

Truncate

Fields

table_name: ObjectName
partitions: Option<Vec<Expr>>

Truncate (Hive)

Msck

Fields

table_name: ObjectName
repair: bool
partition_action: Option<AddDropSync>

Msck (Hive)

Query(Box<Query>)

SELECT

Insert

Fields

or: Option<SqliteOnConflict>

Only for Sqlite

into: bool

INTO - optional keyword

table_name: ObjectName

TABLE

columns: Vec<Ident>

COLUMNS

overwrite: bool

Overwrite (Hive)

source: Box<Query>

A SQL query that specifies what to insert

partitioned: Option<Vec<Expr>>

partitioned insert (Hive)

after_columns: Vec<Ident>

Columns defined after PARTITION

table: bool

whether the insert has the table keyword (Hive)

INSERT

Directory

Fields

overwrite: bool
local: bool
path: String
file_format: Option<FileFormat>
source: Box<Query>

Copy

Fields

table_name: ObjectName

TABLE

columns: Vec<Ident>

COLUMNS

to: bool

If true, is a ‘COPY TO’ statement. If false is a ‘COPY FROM’

target: CopyTarget

The source of ‘COPY FROM’, or the target of ‘COPY TO’

options: Vec<CopyOption>

WITH options (from PostgreSQL version 9.0)

legacy_options: Vec<CopyLegacyOption>

WITH options (before PostgreSQL version 9.0)

values: Vec<Option<String>>

VALUES a vector of values to be copied

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

selection: Option<Expr>

WHERE

UPDATE

Delete

Fields

table_name: TableFactor

FROM

using: Option<TableFactor>

USING (Snowflake, Postgres)

selection: Option<Expr>

WHERE

DELETE

CreateView

Fields

or_replace: bool
materialized: bool
name: ObjectName

View name

columns: Vec<Ident>
query: Box<Query>
with_options: Vec<SqlOption>

CREATE VIEW

CreateTable

Fields

or_replace: bool
temporary: bool
external: bool
global: Option<bool>
if_not_exists: bool
name: ObjectName

Table name

columns: Vec<ColumnDef>

Optional schema

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
engine: Option<String>
default_charset: Option<String>
collation: Option<String>
on_commit: Option<OnCommit>
on_cluster: Option<String>

CREATE TABLE

CreateVirtualTable

Fields

name: ObjectName
if_not_exists: bool
module_name: Ident
module_args: Vec<Ident>

SQLite’s CREATE VIRTUAL TABLE .. USING <module_name> (<module_args>)

CreateIndex

Fields

name: ObjectName

index name

table_name: ObjectName
columns: Vec<OrderByExpr>
unique: bool
if_not_exists: bool

CREATE INDEX

CreateRole

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>

CREATE ROLE See postgres

AlterTable

Fields

name: ObjectName

Table name

ALTER TABLE

Drop

Fields

object_type: ObjectType

The type of the object to drop: TABLE, VIEW, etc.

if_exists: bool

An optional IF EXISTS clause. (Non-standard.)

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.

purge: bool

Hive allows you specify whether the table’s stored data will be deleted along with the dropped table

DROP

Declare

Fields

name: Ident

Cursor name

binary: bool

Causes the cursor to return data in binary rather than in text format.

sensitive: Option<bool>

None = Not specified Some(true) = INSENSITIVE Some(false) = ASENSITIVE

scroll: Option<bool>

None = Not specified Some(true) = SCROLL Some(false) = NO SCROLL

hold: Option<bool>

None = Not specified Some(true) = WITH HOLD, specifies that the cursor can continue to be used after the transaction that created it successfully commits Some(false) = WITHOUT HOLD, specifies that the cursor cannot be used outside of the transaction that created it

query: Box<Query>

DECLARE - Declaring Cursor Variables

Note: this is a PostgreSQL-specific statement, but may also compatible with other SQL.

Fetch

Fields

name: Ident

Cursor name

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).

role_name: Option<Ident>

Role name. If NONE is specified, then the current role name is removed.

SET [ SESSION | LOCAL ] ROLE role_name. Examples: ANSI, Postgresql, MySQL, and Oracle.

SetVariable

Fields

local: bool
hivevar: bool
variable: ObjectName
value: Vec<Expr>

SET

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.

SetNames

Fields

charset_name: String
collation_name: Option<String>

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

SHOW FUNCTIONS

Note: this is a Presto-specific statement.

ShowVariable

Fields

variable: Vec<Ident>

SHOW

Note: this is a PostgreSQL-specific statement.

ShowVariables

Fields

SHOW VARIABLES

Note: this is a MySQL-specific statement.

ShowCreate

Fields

obj_type: ShowCreateObject
obj_name: ObjectName

SHOW CREATE TABLE

Note: this is a MySQL-specific statement.

ShowColumns

Fields

extended: bool
full: bool
table_name: ObjectName

SHOW COLUMNS

Note: this is a MySQL-specific statement.

ShowTables

Fields

extended: bool
full: bool
db_name: Option<Ident>

SHOW TABLES

Note: this is a MySQL-specific statement.

ShowCollation

Fields

SHOW COLLATION

Note: this is a MySQL-specific statement.

Use

Fields

db_name: Ident

USE

Note: This is a MySQL-specific statement.

StartTransaction

Fields

{ BEGIN [ TRANSACTION | WORK ] | START TRANSACTION } ...

SetTransaction

Fields

snapshot: Option<Value>
session: bool

SET TRANSACTION ...

Comment

Fields

object_type: CommentObject
object_name: ObjectName
comment: Option<String>

COMMENT ON ...

Note: this is a PostgreSQL-specific statement.

Commit

Fields

chain: bool

COMMIT [ TRANSACTION | WORK ] [ AND [ NO ] CHAIN ]

Rollback

Fields

chain: bool

ROLLBACK [ TRANSACTION | WORK ] [ AND [ NO ] CHAIN ]

CreateSchema

Fields

schema_name: SchemaName

<schema name> | AUTHORIZATION <schema authorization identifier> | <schema name> AUTHORIZATION <schema authorization identifier>

if_not_exists: bool

CREATE SCHEMA

CreateDatabase

Fields

db_name: ObjectName
if_not_exists: bool
location: Option<String>
managed_location: Option<String>

CREATE DATABASE

CreateFunction

Fields

temporary: bool
name: ObjectName
class_name: String

CREATE FUNCTION

Hive: https://cwiki.apache.org/confluence/display/hive/languagemanual+ddl#LanguageManualDDL-Create/Drop/ReloadFunction

Assert

Fields

condition: Expr
message: Option<Expr>

ASSERT <condition> [AS <message>]

Grant

Fields

privileges: Privileges
objects: GrantObjects
grantees: Vec<Ident>
with_grant_option: bool
granted_by: Option<Ident>

GRANT privileges ON objects TO grantees

Revoke

Fields

privileges: Privileges
objects: GrantObjects
grantees: Vec<Ident>
granted_by: Option<Ident>
cascade: bool

REVOKE privileges ON objects FROM grantees

Deallocate

Fields

name: Ident
prepare: bool

DEALLOCATE [ PREPARE ] { name | ALL }

Note: this is a PostgreSQL-specific statement.

Execute

Fields

name: Ident
parameters: Vec<Expr>

EXECUTE name [ ( parameter [, ...] ) ]

Note: this is a PostgreSQL-specific statement.

Prepare

Fields

name: Ident
data_types: Vec<DataType>
statement: Box<Statement>

PREPARE name [ ( data_type [, ...] ) ] AS statement

Note: this is a PostgreSQL-specific statement.

Kill

Fields

modifier: Option<KillType>
id: u64

ExplainTable

Fields

describe_alias: bool
table_name: ObjectName

EXPLAIN TABLE Note: this is a MySQL-specific statement. See https://dev.mysql.com/doc/refman/8.0/en/explain.html

Explain

Fields

describe_alias: bool
analyze: bool

Carry out the command and show actual run times and other statistics.

verbose: bool
statement: Box<Statement>

A SQL query that specifies what to explain

format: Option<AnalyzeFormat>

Optional output format of explain

EXPLAIN / DESCRIBE for select_statement

Savepoint

Fields

name: Ident

SAVEPOINT – define a new savepoint within the current transaction

Merge

Fields

into: bool
table: TableFactor
source: TableFactor
on: Box<Expr>
clauses: Vec<MergeClause>

Cache

Fields

table_flag: Option<ObjectName>
table_name: ObjectName
has_as: bool
options: Vec<SqlOption>
query: Option<Query>

CACHE [ FLAG ] TABLE <table_name> [ OPTIONS(‘K1’ = ‘V1’, ‘K2’ = V2) ] [ AS ] [ ] Based on Spark SQL,see https://docs.databricks.com/spark/latest/spark-sql/language-manual/sql-ref-syntax-aux-cache-cache-table.html

UNCache

Fields

table_name: ObjectName
if_exists: bool

UNCACHE TABLE [ IF EXISTS ] <table_name>

CreateSequence

Fields

temporary: bool
if_not_exists: bool
name: ObjectName

CreateSequence – define a new sequence CREATE [ { TEMPORARY | TEMP } ] SEQUENCE [ IF NOT EXISTS ] <sequence_name>

Trait Implementations

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Formats the value using the given formatter. Read more
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more
The type returned in the event of a conversion error.
Performs the conversion.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
Converts the given value to a String. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.