Enum sqlparser::ast::Statement

source ·
pub enum Statement {
Show 57 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>, returning: Option<Vec<SelectItem>>, }, 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>, returning: Option<Vec<SelectItem>>, }, Delete { table_name: TableFactor, using: Option<TableFactor>, selection: Option<Expr>, returning: Option<Vec<SelectItem>>, }, CreateView { or_replace: bool, materialized: bool, name: ObjectName, columns: Vec<Ident>, query: Box<Query>, with_options: Vec<SqlOption>, cluster_by: Vec<Ident>, }, 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, using: Option<Ident>, 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, }, AlterIndex { name: ObjectName, operation: AlterIndexOperation, }, Drop { object_type: ObjectType, if_exists: bool, names: Vec<ObjectName>, cascade: bool, restrict: bool, purge: 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>, }, 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 { or_replace: bool, temporary: bool, name: ObjectName, args: Option<Vec<OperateFunctionArg>>, return_type: Option<DataType>, params: CreateFunctionBody, }, 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>, },
}
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)

§returning: Option<Vec<SelectItem>>

RETURNING

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

§returning: Option<Vec<SelectItem>>

RETURNING

UPDATE

§

Delete

Fields

§table_name: TableFactor

FROM

§using: Option<TableFactor>

USING (Snowflake, Postgres)

§selection: Option<Expr>

WHERE

§returning: Option<Vec<SelectItem>>

RETURNING

DELETE

§

CreateView

Fields

§or_replace: bool
§materialized: bool
§name: ObjectName

View name

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

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

§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
§using: Option<Ident>
§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

§

AlterIndex

Fields

§

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

§

DropFunction

Fields

§if_exists: bool
§func_desc: Vec<DropFunctionDesc>

One or more function to drop

§option: Option<ReferentialAction>

CASCADE or RESTRICT

DROP Function

§

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

Fields

§local: bool
§value: Expr
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

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

SHOW FUNCTIONS

Note: this is a Presto-specific statement.

§

ShowVariable

Fields

§variable: Vec<Ident>
SHOW <variable>

Note: this is a PostgreSQL-specific statement.

§

ShowVariables

SHOW VARIABLES

Note: this is a MySQL-specific statement.

§

ShowCreate

Fields

§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

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

§or_replace: bool
§temporary: bool
§return_type: Option<DataType>
§params: CreateFunctionBody

Optional parameters.

CREATE FUNCTION

Supported variants:

  1. Hive
  2. Postgres
§

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

If true, query used the MySQL DESCRIBE alias for explain

§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

§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
§source: TableFactor
§on: Box<Expr>
§clauses: Vec<MergeClause>
§

Cache

Fields

§table_flag: Option<ObjectName>

Table flag

§table_name: ObjectName

Table name

§has_as: bool
§options: Vec<SqlOption>

Table confs

§query: Option<Query>

Cache table as a Query

CACHE [ FLAG ] TABLE <table_name> [ OPTIONS('K1' = 'V1', 'K2' = V2) ] [ AS ] [ <query> ].

See Spark SQL docs for more details.

§

UNCache

Fields

§table_name: ObjectName

Table name

§if_exists: bool

UNCACHE TABLE [ IF EXISTS ] <table_name>

§

CreateSequence

Fields

§temporary: bool
§if_not_exists: bool
§data_type: Option<DataType>
§sequence_options: Vec<SequenceOptions>
§owned_by: Option<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
Deserialize this value from the given Serde deserializer. 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 returns an Ordering between self and other. Read more
Compares and returns the maximum of two values. Read more
Compares and returns the minimum of two values. Read more
Restrict a value to a certain interval. Read more
This method tests for self and other values to be equal, and is used by ==.
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Serialize this value into the given Serde serializer. 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.