pub enum Statement {
Show 111 variants
Analyze {
table_name: ObjectName,
partitions: Option<Vec<Expr>>,
for_columns: bool,
columns: Vec<Ident>,
cache_metadata: bool,
noscan: bool,
compute_statistics: bool,
has_table_keyword: bool,
},
Set(Set),
Truncate {
table_names: Vec<TruncateTableTarget>,
partitions: Option<Vec<Expr>>,
table: bool,
identity: Option<TruncateIdentityOption>,
cascade: Option<CascadeOption>,
on_cluster: Option<Ident>,
},
Msck {
table_name: ObjectName,
repair: bool,
partition_action: Option<AddDropSync>,
},
Query(Box<Query>),
Insert(Insert),
Install {
extension_name: Ident,
},
Load {
extension_name: Ident,
},
Directory {
overwrite: bool,
local: bool,
path: String,
file_format: Option<FileFormat>,
source: Box<Query>,
},
Case(CaseStatement),
If(IfStatement),
While(WhileStatement),
Raise(RaiseStatement),
Call(Function),
Copy {
source: CopySource,
to: bool,
target: CopyTarget,
options: Vec<CopyOption>,
legacy_options: Vec<CopyLegacyOption>,
values: Vec<Option<String>>,
},
CopyIntoSnowflake {Show 14 fields
kind: CopyIntoSnowflakeKind,
into: ObjectName,
into_columns: Option<Vec<Ident>>,
from_obj: Option<ObjectName>,
from_obj_alias: Option<Ident>,
stage_params: StageParamsObject,
from_transformations: Option<Vec<StageLoadSelectItemKind>>,
from_query: Option<Box<Query>>,
files: Option<Vec<String>>,
pattern: Option<String>,
file_format: KeyValueOptions,
copy_options: KeyValueOptions,
validation_mode: Option<String>,
partition: Option<Box<Expr>>,
},
Open(OpenStatement),
Close {
cursor: CloseCursor,
},
Update {
table: TableWithJoins,
assignments: Vec<Assignment>,
from: Option<UpdateTableFromKind>,
selection: Option<Expr>,
returning: Option<Vec<SelectItem>>,
or: Option<SqliteOnConflict>,
},
Delete(Delete),
CreateView {Show 14 fields
or_alter: bool,
or_replace: bool,
materialized: bool,
name: ObjectName,
columns: Vec<ViewColumnDef>,
query: Box<Query>,
options: CreateTableOptions,
cluster_by: Vec<Ident>,
comment: Option<String>,
with_no_schema_binding: bool,
if_not_exists: bool,
temporary: bool,
to: Option<ObjectName>,
params: Option<CreateViewParams>,
},
CreateTable(CreateTable),
CreateVirtualTable {
name: ObjectName,
if_not_exists: bool,
module_name: Ident,
module_args: Vec<Ident>,
},
CreateIndex(CreateIndex),
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>,
},
CreateSecret {
or_replace: bool,
temporary: Option<bool>,
if_not_exists: bool,
name: Option<Ident>,
storage_specifier: Option<Ident>,
secret_type: Ident,
options: Vec<SecretOption>,
},
CreateServer(CreateServerStatement),
CreatePolicy {
name: Ident,
table_name: ObjectName,
policy_type: Option<CreatePolicyType>,
command: Option<CreatePolicyCommand>,
to: Option<Vec<Owner>>,
using: Option<Expr>,
with_check: Option<Expr>,
},
CreateConnector(CreateConnector),
AlterTable {
name: ObjectName,
if_exists: bool,
only: bool,
operations: Vec<AlterTableOperation>,
location: Option<HiveSetLocation>,
on_cluster: Option<Ident>,
iceberg: bool,
},
AlterIndex {
name: ObjectName,
operation: AlterIndexOperation,
},
AlterView {
name: ObjectName,
columns: Vec<Ident>,
query: Box<Query>,
with_options: Vec<SqlOption>,
},
AlterType(AlterType),
AlterRole {
name: Ident,
operation: AlterRoleOperation,
},
AlterPolicy {
name: Ident,
table_name: ObjectName,
operation: AlterPolicyOperation,
},
AlterConnector {
name: Ident,
properties: Option<Vec<SqlOption>>,
url: Option<String>,
owner: Option<AlterConnectorOwner>,
},
AlterSession {
set: bool,
session_params: KeyValueOptions,
},
AttachDatabase {
schema_name: Ident,
database_file_name: Expr,
database: bool,
},
AttachDuckDBDatabase {
if_not_exists: bool,
database: bool,
database_path: Ident,
database_alias: Option<Ident>,
attach_options: Vec<AttachDuckDBDatabaseOption>,
},
DetachDuckDBDatabase {
if_exists: bool,
database: bool,
database_alias: Ident,
},
Drop {
object_type: ObjectType,
if_exists: bool,
names: Vec<ObjectName>,
cascade: bool,
restrict: bool,
purge: bool,
temporary: bool,
table: Option<ObjectName>,
},
DropFunction {
if_exists: bool,
func_desc: Vec<FunctionDesc>,
drop_behavior: Option<DropBehavior>,
},
DropDomain(DropDomain),
DropProcedure {
if_exists: bool,
proc_desc: Vec<FunctionDesc>,
drop_behavior: Option<DropBehavior>,
},
DropSecret {
if_exists: bool,
temporary: Option<bool>,
name: Ident,
storage_specifier: Option<Ident>,
},
DropPolicy {
if_exists: bool,
name: Ident,
table_name: ObjectName,
drop_behavior: Option<DropBehavior>,
},
DropConnector {
if_exists: bool,
name: Ident,
},
Declare {
stmts: Vec<Declare>,
},
CreateExtension {
name: Ident,
if_not_exists: bool,
cascade: bool,
schema: Option<Ident>,
version: Option<Ident>,
},
DropExtension {
names: Vec<Ident>,
if_exists: bool,
cascade_or_restrict: Option<ReferentialAction>,
},
Fetch {
name: Ident,
direction: FetchDirection,
position: FetchPosition,
into: Option<ObjectName>,
},
Flush {
object_type: FlushType,
location: Option<FlushLocation>,
channel: Option<String>,
read_lock: bool,
export: bool,
tables: Vec<ObjectName>,
},
Discard {
object_type: DiscardObject,
},
ShowFunctions {
filter: Option<ShowStatementFilter>,
},
ShowVariable {
variable: Vec<Ident>,
},
ShowStatus {
filter: Option<ShowStatementFilter>,
global: bool,
session: bool,
},
ShowVariables {
filter: Option<ShowStatementFilter>,
global: bool,
session: bool,
},
ShowCreate {
obj_type: ShowCreateObject,
obj_name: ObjectName,
},
ShowColumns {
extended: bool,
full: bool,
show_options: ShowStatementOptions,
},
ShowDatabases {
terse: bool,
history: bool,
show_options: ShowStatementOptions,
},
ShowSchemas {
terse: bool,
history: bool,
show_options: ShowStatementOptions,
},
ShowObjects(ShowObjects),
ShowTables {
terse: bool,
history: bool,
extended: bool,
full: bool,
external: bool,
show_options: ShowStatementOptions,
},
ShowViews {
terse: bool,
materialized: bool,
show_options: ShowStatementOptions,
},
ShowCollation {
filter: Option<ShowStatementFilter>,
},
Use(Use),
StartTransaction {
modes: Vec<TransactionMode>,
begin: bool,
transaction: Option<BeginTransactionKind>,
modifier: Option<TransactionModifier>,
statements: Vec<Statement>,
exception: Option<Vec<ExceptionWhen>>,
has_end_keyword: bool,
},
Comment {
object_type: CommentObject,
object_name: ObjectName,
comment: Option<String>,
if_exists: bool,
},
Commit {
chain: bool,
end: bool,
modifier: Option<TransactionModifier>,
},
Rollback {
chain: bool,
savepoint: Option<Ident>,
},
CreateSchema {
schema_name: SchemaName,
if_not_exists: bool,
with: Option<Vec<SqlOption>>,
options: Option<Vec<SqlOption>>,
default_collate_spec: Option<Expr>,
},
CreateDatabase {
db_name: ObjectName,
if_not_exists: bool,
location: Option<String>,
managed_location: Option<String>,
},
CreateFunction(CreateFunction),
CreateTrigger {Show 15 fields
or_alter: bool,
or_replace: bool,
is_constraint: bool,
name: ObjectName,
period: TriggerPeriod,
events: Vec<TriggerEvent>,
table_name: ObjectName,
referenced_table_name: Option<ObjectName>,
referencing: Vec<TriggerReferencing>,
trigger_object: TriggerObject,
include_each: bool,
condition: Option<Expr>,
exec_body: Option<TriggerExecBody>,
statements: Option<ConditionalStatements>,
characteristics: Option<ConstraintCharacteristics>,
},
DropTrigger {
if_exists: bool,
trigger_name: ObjectName,
table_name: Option<ObjectName>,
option: Option<ReferentialAction>,
},
CreateProcedure {
or_alter: bool,
name: ObjectName,
params: Option<Vec<ProcedureParam>>,
language: Option<Ident>,
body: ConditionalStatements,
},
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: KeyValueOptions,
file_format: KeyValueOptions,
copy_options: KeyValueOptions,
comment: Option<String>,
},
Assert {
condition: Expr,
message: Option<Expr>,
},
Grant {
privileges: Privileges,
objects: Option<GrantObjects>,
grantees: Vec<Grantee>,
with_grant_option: bool,
as_grantor: Option<Ident>,
granted_by: Option<Ident>,
current_grants: Option<CurrentGrantsKind>,
},
Deny(DenyStatement),
Revoke {
privileges: Privileges,
objects: Option<GrantObjects>,
grantees: Vec<Grantee>,
granted_by: Option<Ident>,
cascade: Option<CascadeOption>,
},
Deallocate {
name: Ident,
prepare: bool,
},
Execute {
name: Option<ObjectName>,
parameters: Vec<Expr>,
has_parentheses: bool,
immediate: bool,
into: Vec<Ident>,
using: Vec<ExprWithAlias>,
output: bool,
default: bool,
},
Prepare {
name: Ident,
data_types: Vec<DataType>,
statement: Box<Statement>,
},
Kill {
modifier: Option<KillType>,
id: u64,
},
ExplainTable {
describe_alias: DescribeAlias,
hive_format: Option<HiveDescribeFormat>,
has_table_keyword: bool,
table_name: ObjectName,
},
Explain {
describe_alias: DescribeAlias,
analyze: bool,
verbose: bool,
query_plan: bool,
estimate: bool,
statement: Box<Statement>,
format: Option<AnalyzeFormat>,
options: Option<Vec<UtilityOption>>,
},
Savepoint {
name: Ident,
},
ReleaseSavepoint {
name: Ident,
},
Merge {
into: bool,
table: TableFactor,
source: TableFactor,
on: Box<Expr>,
clauses: Vec<MergeClause>,
output: Option<OutputClause>,
},
Cache {
table_flag: Option<ObjectName>,
table_name: ObjectName,
has_as: bool,
options: Vec<SqlOption>,
query: Option<Box<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>,
},
CreateDomain(CreateDomain),
CreateType {
name: ObjectName,
representation: UserDefinedTypeRepresentation,
},
Pragma {
name: ObjectName,
value: Option<Value>,
is_eq: bool,
},
LockTables {
tables: Vec<LockTable>,
},
UnlockTables,
Unload {
query: Box<Query>,
to: Ident,
with: Vec<SqlOption>,
},
OptimizeTable {
name: ObjectName,
on_cluster: Option<Ident>,
partition: Option<Partition>,
include_final: bool,
deduplicate: Option<Deduplicate>,
},
LISTEN {
channel: Ident,
},
UNLISTEN {
channel: Ident,
},
NOTIFY {
channel: Ident,
payload: Option<String>,
},
LoadData {
local: bool,
inpath: String,
overwrite: bool,
table_name: ObjectName,
partitioned: Option<Vec<Expr>>,
table_format: Option<HiveLoadDataFormat>,
},
RenameTable(Vec<RenameTable>),
List(FileStagingCommand),
Remove(FileStagingCommand),
RaisError {
message: Box<Expr>,
severity: Box<Expr>,
state: Box<Expr>,
arguments: Vec<Expr>,
options: Vec<RaisErrorOption>,
},
Print(PrintStatement),
Return(ReturnStatement),
}Expand description
A top-level statement (SELECT, INSERT, CREATE, etc.)
Variants§
Analyze
ANALYZEAnalyze (Hive)
Fields
table_name: ObjectNameSet(Set)
Truncate
TRUNCATETruncate (Hive)
Fields
table_names: Vec<TruncateTableTarget>identity: Option<TruncateIdentityOption>Postgres-specific option [ RESTART IDENTITY | CONTINUE IDENTITY ]
cascade: Option<CascadeOption>Postgres-specific option [ CASCADE | RESTRICT ]
Msck
MSCKMsck (Hive)
Query(Box<Query>)
SELECTInsert(Insert)
INSERTInstall
INSTALLLoad
LOADDirectory
Case(CaseStatement)
A CASE statement.
If(IfStatement)
An IF statement.
While(WhileStatement)
A WHILE statement.
Raise(RaiseStatement)
A RAISE statement.
Call(Function)
CALL <function>Copy
COPY [TO | FROM] ...Fields
source: CopySourceThe source of ‘COPY TO’, or the target of ‘COPY FROM’
target: CopyTargetThe 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
COPY INTO <table> | <location>See: https://docs.snowflake.com/en/sql-reference/sql/copy-into-table https://docs.snowflake.com/en/sql-reference/sql/copy-into-location
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.
Fields
kind: CopyIntoSnowflakeKindinto: ObjectNamefrom_obj: Option<ObjectName>stage_params: StageParamsObjectfrom_transformations: Option<Vec<StageLoadSelectItemKind>>file_format: KeyValueOptionscopy_options: KeyValueOptionsOpen(OpenStatement)
OPEN cursor_nameOpens a cursor.
Close
CLOSECloses the portal underlying an open cursor.
Fields
cursor: CloseCursorCursor name
Update
UPDATEFields
table: TableWithJoinsTABLE
assignments: Vec<Assignment>Column assignments
from: Option<UpdateTableFromKind>Table which provide value to be set
returning: Option<Vec<SelectItem>>RETURNING
or: Option<SqliteOnConflict>SQLite-specific conflict resolution clause
Delete(Delete)
DELETECreateView
CREATE VIEWFields
name: ObjectNameView name
columns: Vec<ViewColumnDef>options: CreateTableOptionscomment: Option<String>Snowflake: Views can have comments in Snowflake. https://docs.snowflake.com/en/sql-reference/sql/create-view#syntax
with_no_schema_binding: boolif true, has RedShift [WITH NO SCHEMA BINDING] clause https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_VIEW.html
if_not_exists: boolif true, has SQLite IF NOT EXISTS clause https://www.sqlite.org/lang_createview.html
temporary: boolif true, has SQLite TEMP or TEMPORARY clause https://www.sqlite.org/lang_createview.html
to: Option<ObjectName>if not None, has Clickhouse TO clause, specify the table into which to insert results
https://clickhouse.com/docs/en/sql-reference/statements/create/view#materialized-view
params: Option<CreateViewParams>MySQL: Optional parameters for the view algorithm, definer, and security context
CreateTable(CreateTable)
CREATE TABLECreateVirtualTable
CREATE VIRTUAL TABLE .. USING <module_name> (<module_args>)`Sqlite specific statement
CreateIndex(CreateIndex)
`CREATE INDEX`CreateRole
CREATE ROLESee PostgreSQL
CreateSecret
CREATE SECRETSee DuckDB
Fields
options: Vec<SecretOption>CreateServer(CreateServerStatement)
A CREATE SERVER statement.
CreatePolicy
CREATE POLICYSee PostgreSQL
Fields
table_name: ObjectNamepolicy_type: Option<CreatePolicyType>command: Option<CreatePolicyCommand>CreateConnector(CreateConnector)
CREATE CONNECTORSee Hive
AlterTable
ALTER TABLEFields
name: ObjectNameTable name
operations: Vec<AlterTableOperation>location: Option<HiveSetLocation>on_cluster: Option<Ident>ClickHouse dialect supports ON CLUSTER clause for ALTER TABLE
For example: ALTER TABLE table_name ON CLUSTER cluster_name ADD COLUMN c UInt32
ClickHouse
iceberg: boolSnowflake “ICEBERG” clause for Iceberg tables https://docs.snowflake.com/en/sql-reference/sql/alter-iceberg-table
AlterIndex
ALTER INDEXAlterView
ALTER VIEWFields
name: ObjectNameView name
AlterType(AlterType)
ALTER TYPE
See [PostgreSQL](https://www.postgresql.org/docs/current/sql-altertype.html)AlterRole
ALTER ROLEAlterPolicy
ALTER POLICY <NAME> ON <TABLE NAME> [<OPERATION>](Postgresql-specific)
AlterConnector
ALTER CONNECTOR connector_name SET DCPROPERTIES(property_name=property_value, ...);
or
ALTER CONNECTOR connector_name SET URL new_url;
or
ALTER CONNECTOR connector_name SET OWNER [USER|ROLE] user_or_role;(Hive-specific)
Fields
owner: Option<AlterConnectorOwner>AlterSession
ALTER SESSION SET sessionParam
ALTER SESSION UNSET <param_name> [ , <param_name> , ... ]See https://docs.snowflake.com/en/sql-reference/sql/alter-session
Fields
session_params: KeyValueOptionsThe session parameters to set or unset
AttachDatabase
ATTACH DATABASE 'path/to/file' AS alias(SQLite-specific)
Fields
AttachDuckDBDatabase
(DuckDB-specific)
ATTACH 'sqlite_file.db' AS sqlite_db (READ_ONLY, TYPE SQLITE);Fields
attach_options: Vec<AttachDuckDBDatabaseOption>DetachDuckDBDatabase
Fields
Drop
DROP [TABLE, VIEW, ...]Fields
object_type: ObjectTypeThe type of the object to drop: TABLE, VIEW, etc.
names: Vec<ObjectName>One or more objects to drop. (ANSI SQL requires exactly one.)
cascade: boolWhether CASCADE was specified. This will be false when
RESTRICT or no drop behavior at all was specified.
restrict: boolWhether RESTRICT was specified. This will be false when
CASCADE or no drop behavior at all was specified.
purge: boolHive allows you specify whether the table’s stored data will be deleted along with the dropped table
table: Option<ObjectName>MySQL-specific drop index syntax, which requires table specification See https://dev.mysql.com/doc/refman/8.4/en/drop-index.html
DropFunction
DROP FUNCTIONFields
func_desc: Vec<FunctionDesc>One or more function to drop
drop_behavior: Option<DropBehavior>CASCADE or RESTRICT
DropDomain(DropDomain)
DropProcedure
DROP PROCEDUREFields
proc_desc: Vec<FunctionDesc>One or more function to drop
drop_behavior: Option<DropBehavior>CASCADE or RESTRICT
DropSecret
DROP SECRETDropPolicy
DROP POLICYSee PostgreSQL
DropConnector
DROP CONNECTORSee Hive
Declare
DECLAREDeclare Cursor Variables
Note: this is a PostgreSQL-specific statement, but may also compatible with other SQL.
CreateExtension
CREATE EXTENSION [ IF NOT EXISTS ] extension_name
[ WITH ] [ SCHEMA schema_name ]
[ VERSION version ]
[ CASCADE ]Note: this is a PostgreSQL-specific statement,
DropExtension
DROP EXTENSION [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
Note: this is a PostgreSQL-specific statement.
https://www.postgresql.org/docs/current/sql-dropextension.htmlFields
cascade_or_restrict: Option<ReferentialAction>CASCADE or RESTRICT
Fetch
FETCHRetrieve rows from a query using a cursor
Note: this is a PostgreSQL-specific statement, but may also compatible with other SQL.
Fields
direction: FetchDirectionposition: FetchPositioninto: Option<ObjectName>Optional, It’s possible to fetch rows form cursor to the table
Flush
FLUSH [NO_WRITE_TO_BINLOG | LOCAL] flush_option [, flush_option] ... | tables_optionNote: this is a Mysql-specific statement, but may also compatible with other SQL.
Discard
DISCARD [ ALL | PLANS | SEQUENCES | TEMPORARY | TEMP ]Note: this is a PostgreSQL-specific statement, but may also compatible with other SQL.
Fields
object_type: DiscardObjectShowFunctions
SHOW FUNCTIONS
Note: this is a Presto-specific statement.
Fields
filter: Option<ShowStatementFilter>ShowVariable
SHOW <variable>Note: this is a PostgreSQL-specific statement.
ShowStatus
SHOW [GLOBAL | SESSION] STATUS [LIKE 'pattern' | WHERE expr]Note: this is a MySQL-specific statement.
ShowVariables
SHOW VARIABLESNote: this is a MySQL-specific statement.
ShowCreate
SHOW CREATE TABLENote: this is a MySQL-specific statement.
ShowColumns
SHOW COLUMNSShowDatabases
SHOW DATABASESShowSchemas
SHOW SCHEMASShowObjects(ShowObjects)
SHOW OBJECTS LIKE 'line%' IN mydb.publicSnowflake-specific statement https://docs.snowflake.com/en/sql-reference/sql/show-objects
ShowTables
SHOW TABLESFields
show_options: ShowStatementOptionsShowViews
SHOW VIEWSShowCollation
SHOW COLLATIONNote: this is a MySQL-specific statement.
Fields
filter: Option<ShowStatementFilter>Use(Use)
`USE ...`StartTransaction
START [ TRANSACTION | WORK ] | START TRANSACTION } ...If begin is false.
`BEGIN [ TRANSACTION | WORK ] | START TRANSACTION } ...`If begin is true
Fields
modes: Vec<TransactionMode>transaction: Option<BeginTransactionKind>modifier: Option<TransactionModifier>statements: Vec<Statement>List of statements belonging to the BEGIN block.
Example:
BEGIN
SELECT 1;
SELECT 2;
END;exception: Option<Vec<ExceptionWhen>>Exception handling with exception clauses. Example:
EXCEPTION
WHEN EXCEPTION_1 THEN
SELECT 2;
WHEN EXCEPTION_2 OR EXCEPTION_3 THEN
SELECT 3;
WHEN OTHER THEN
SELECT 4;https://cloud.google.com/bigquery/docs/reference/standard-sql/procedural-language#beginexceptionend https://docs.snowflake.com/en/sql-reference/snowflake-scripting/exception
Comment
COMMENT ON ...Note: this is a PostgreSQL-specific statement.
Fields
object_type: CommentObjectobject_name: ObjectNameif_exists: boolAn optional IF EXISTS clause. (Non-standard.)
See https://docs.snowflake.com/en/sql-reference/sql/comment
Commit
COMMIT [ TRANSACTION | WORK ] [ AND [ NO ] CHAIN ]If end is false
END [ TRY | CATCH ]If end is true
Rollback
ROLLBACK [ TRANSACTION | WORK ] [ AND [ NO ] CHAIN ] [ TO [ SAVEPOINT ] savepoint_name ]CreateSchema
CREATE SCHEMAFields
schema_name: SchemaName<schema name> | AUTHORIZATION <schema authorization identifier> | <schema name> AUTHORIZATION <schema authorization identifier>
CreateDatabase
CREATE DATABASEFields
db_name: ObjectNameCreateFunction(CreateFunction)
CreateTrigger
CREATE TRIGGER
Examples:
CREATE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
EXECUTE FUNCTION trigger_function();Postgres: https://www.postgresql.org/docs/current/sql-createtrigger.html SQL Server: https://learn.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql
Fields
or_replace: boolThe OR REPLACE clause is used to re-create the trigger if it already exists.
Example:
CREATE OR REPLACE TRIGGER trigger_name
AFTER INSERT ON table_name
FOR EACH ROW
EXECUTE FUNCTION trigger_function();name: ObjectNameThe name of the trigger to be created.
period: TriggerPeriodDetermines whether the function is called before, after, or instead of the event.
Example of BEFORE:
CREATE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
EXECUTE FUNCTION trigger_function();Example of AFTER:
CREATE TRIGGER trigger_name
AFTER INSERT ON table_name
FOR EACH ROW
EXECUTE FUNCTION trigger_function();Example of INSTEAD OF:
CREATE TRIGGER trigger_name
INSTEAD OF INSERT ON table_name
FOR EACH ROW
EXECUTE FUNCTION trigger_function();events: Vec<TriggerEvent>Multiple events can be specified using OR, such as INSERT, UPDATE, DELETE, or TRUNCATE.
table_name: ObjectNameThe table on which the trigger is to be created.
referenced_table_name: Option<ObjectName>The optional referenced table name that can be referenced via
the FROM keyword.
referencing: Vec<TriggerReferencing>This keyword immediately precedes the declaration of one or two relation names that provide access to the transition relations of the triggering statement.
trigger_object: TriggerObjectThis specifies whether the trigger function should be fired once for every row affected by the trigger event, or just once per SQL statement.
exec_body: Option<TriggerExecBody>Execute logic block
statements: Option<ConditionalStatements>For SQL dialects with statement(s) for a body
characteristics: Option<ConstraintCharacteristics>The characteristic of the trigger, which include whether the trigger is DEFERRABLE, INITIALLY DEFERRED, or INITIALLY IMMEDIATE,
DropTrigger
DROP TRIGGER
DROP TRIGGER [ IF EXISTS ] name ON table_name [ CASCADE | RESTRICT ]Fields
trigger_name: ObjectNametable_name: Option<ObjectName>option: Option<ReferentialAction>CASCADE or RESTRICT
CreateProcedure
CREATE PROCEDURECreateMacro
CreateStage
CREATE STAGESee https://docs.snowflake.com/en/sql-reference/sql/create-stage
Fields
name: ObjectNamestage_params: StageParamsObjectdirectory_table_params: KeyValueOptionsfile_format: KeyValueOptionscopy_options: KeyValueOptionsAssert
ASSERT <condition> [AS <message>]Grant
GRANT privileges ON objects TO granteesFields
privileges: Privilegesobjects: Option<GrantObjects>current_grants: Option<CurrentGrantsKind>Deny(DenyStatement)
DENY privileges ON object TO granteesRevoke
REVOKE privileges ON objects FROM granteesDeallocate
DEALLOCATE [ PREPARE ] { name | ALL }Note: this is a PostgreSQL-specific statement.
Execute
An `EXECUTE` statementPostgres: https://www.postgresql.org/docs/current/sql-execute.html MSSQL: https://learn.microsoft.com/en-us/sql/relational-databases/stored-procedures/execute-a-stored-procedure BigQuery: https://cloud.google.com/bigquery/docs/reference/standard-sql/procedural-language#execute_immediate Snowflake: https://docs.snowflake.com/en/sql-reference/sql/execute-immediate
Fields
name: Option<ObjectName>using: Vec<ExprWithAlias>output: boolWhether the last parameter is the return value of the procedure MSSQL: https://learn.microsoft.com/en-us/sql/t-sql/language-elements/execute-transact-sql?view=sql-server-ver17#output
default: boolWhether to invoke the procedure with the default parameter values MSSQL: https://learn.microsoft.com/en-us/sql/t-sql/language-elements/execute-transact-sql?view=sql-server-ver17#default
Prepare
PREPARE name [ ( data_type [, ...] ) ] AS statementNote: this is a PostgreSQL-specific statement.
Kill
KILL [CONNECTION | QUERY | MUTATION]See https://clickhouse.com/docs/en/sql-reference/statements/kill/ See https://dev.mysql.com/doc/refman/8.0/en/kill.html
ExplainTable
[EXPLAIN | DESC | DESCRIBE] TABLENote: this is a MySQL-specific statement. See https://dev.mysql.com/doc/refman/8.0/en/explain.html
Fields
describe_alias: DescribeAliasEXPLAIN | DESC | DESCRIBE
hive_format: Option<HiveDescribeFormat>Hive style FORMATTED | EXTENDED
table_name: ObjectNameTable name
Explain
[EXPLAIN | DESC | DESCRIBE] <statement>Fields
describe_alias: DescribeAliasEXPLAIN | DESC | DESCRIBE
estimate: boolEXPLAIN ESTIMATE
Clickhouse
format: Option<AnalyzeFormat>Optional output format of explain
options: Option<Vec<UtilityOption>>Postgres style utility options, (analyze, verbose true)
Savepoint
SAVEPOINTDefine a new savepoint within the current transaction
ReleaseSavepoint
RELEASE [ SAVEPOINT ] savepoint_nameMerge
A MERGE statement.
MERGE INTO <target_table> USING <source> ON <join_expr> { matchedClause | notMatchedClause } [ ... ]Fields
table: TableFactorSpecifies the table to merge
source: TableFactorSpecifies the table or subquery to join with the target table
clauses: Vec<MergeClause>Specifies the actions to perform when values match or do not match.
output: Option<OutputClause>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
CREATE [ { TEMPORARY | TEMP } ] SEQUENCE [ IF NOT EXISTS ] <sequence_name>Define a new sequence:
CreateDomain(CreateDomain)
A CREATE DOMAIN statement.
CreateType
CREATE TYPE <name>Pragma
PRAGMA <schema-name>.<pragma-name> = <pragma-value>LockTables
LOCK TABLES <table_name> [READ [LOCAL] | [LOW_PRIORITY] WRITE]Note: this is a MySQL-specific statement. See https://dev.mysql.com/doc/refman/8.0/en/lock-tables.html
UnlockTables
UNLOCK TABLESNote: this is a MySQL-specific statement. See https://dev.mysql.com/doc/refman/8.0/en/lock-tables.html
Unload
UNLOAD(statement) TO <destination> [ WITH options ]See Redshift https://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html and
OptimizeTable
OPTIMIZE TABLE [db.]name [ON CLUSTER cluster] [PARTITION partition | PARTITION ID 'partition_id'] [FINAL] [DEDUPLICATE [BY expression]]See ClickHouse https://clickhouse.com/docs/en/sql-reference/statements/optimize
LISTEN
LISTENlisten for a notification channel
See Postgres https://www.postgresql.org/docs/current/sql-listen.html
UNLISTEN
UNLISTENstop listening for a notification
See Postgres https://www.postgresql.org/docs/current/sql-unlisten.html
NOTIFY
NOTIFY channel [ , payload ]send a notification event together with an optional “payload” string to channel
See Postgres https://www.postgresql.org/docs/current/sql-notify.html
LoadData
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename
[PARTITION (partcol1=val1, partcol2=val2 ...)]
[INPUTFORMAT 'inputformat' SERDE 'serde']Loading files into tables
RenameTable(Vec<RenameTable>)
Rename TABLE tbl_name TO new_tbl_name[, tbl_name2 TO new_tbl_name2] ...Renames one or more tables
See Mysql https://dev.mysql.com/doc/refman/9.1/en/rename-table.html
List(FileStagingCommand)
Snowflake LIST
See: https://docs.snowflake.com/en/sql-reference/sql/list
Remove(FileStagingCommand)
Snowflake REMOVE
See: https://docs.snowflake.com/en/sql-reference/sql/remove
RaisError
RaiseError (MSSQL) RAISERROR ( { msg_id | msg_str | @local_variable } { , severity , state } [ , argument [ , …n ] ] ) [ WITH option [ , …n ] ] See https://learn.microsoft.com/en-us/sql/t-sql/language-elements/raiserror-transact-sql?view=sql-server-ver16
Fields
options: Vec<RaisErrorOption>Print(PrintStatement)
PRINT msg_str | @local_variable | string_exprSee: https://learn.microsoft.com/en-us/sql/t-sql/statements/print-transact-sql
Return(ReturnStatement)
RETURN [ expression ]See ReturnStatement
Trait Implementations§
Source§impl Display for Statement
impl Display for Statement
Source§fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Formats a SQL statement with support for pretty printing.
When using the alternate flag ({:#}), the statement will be formatted with proper
indentation and line breaks. For example:
let sql = "SELECT a, b FROM table_1";
let ast = Parser::parse_sql(&GenericDialect, sql).unwrap();
// Regular formatting
assert_eq!(format!("{}", ast[0]), "SELECT a, b FROM table_1");
// Pretty printing
assert_eq!(format!("{:#}", ast[0]),
r#"SELECT
a,
b
FROM
table_1"#);Source§impl From<Set> for Statement
Convert a Set into a Statement.
Convenience function, instead of writing Statement::Set(Set::Set...{...})
impl From<Set> for Statement
Convert a Set into a Statement.
Convenience function, instead of writing Statement::Set(Set::Set...{...})
Source§impl Ord for Statement
impl Ord for Statement
Source§impl PartialOrd for Statement
impl PartialOrd for Statement
Source§impl Spanned for Statement
§partial span
Missing spans:
impl Spanned for Statement
§partial span
Missing spans:
- Statement::CopyIntoSnowflake
- Statement::CreateSecret
- Statement::CreateRole
- Statement::AlterType
- Statement::AlterRole
- Statement::AttachDatabase
- Statement::AttachDuckDBDatabase
- Statement::DetachDuckDBDatabase
- Statement::Drop
- Statement::DropFunction
- Statement::DropProcedure
- Statement::DropSecret
- Statement::Declare
- Statement::CreateExtension
- Statement::Fetch
- Statement::Flush
- Statement::Discard
- Statement::Set
- Statement::ShowFunctions
- Statement::ShowVariable
- Statement::ShowStatus
- Statement::ShowVariables
- Statement::ShowCreate
- Statement::ShowColumns
- Statement::ShowTables
- Statement::ShowCollation
- Statement::StartTransaction
- Statement::Comment
- Statement::Commit
- Statement::Rollback
- Statement::CreateSchema
- Statement::CreateDatabase
- Statement::CreateFunction
- Statement::CreateTrigger
- Statement::DropTrigger
- Statement::CreateProcedure
- Statement::CreateMacro
- Statement::CreateStage
- Statement::Assert
- Statement::Grant
- Statement::Revoke
- Statement::Deallocate
- Statement::Execute
- Statement::Prepare
- Statement::Kill
- Statement::ExplainTable
- Statement::Explain
- Statement::Savepoint
- Statement::ReleaseSavepoint
- Statement::Merge
- Statement::Cache
- Statement::UNCache
- Statement::CreateSequence
- Statement::CreateType
- Statement::Pragma
- Statement::LockTables
- Statement::UnlockTables
- Statement::Unload
- Statement::OptimizeTable
Source§impl TryFrom<Statement> for CreateTableBuilder
impl TryFrom<Statement> for CreateTableBuilder
Source§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 StructuralPartialEq for Statement
Auto Trait Implementations§
impl Freeze for Statement
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> AlignerFor<1> for T
impl<T> AlignerFor<1> for T
Source§impl<T> AlignerFor<1024> for T
impl<T> AlignerFor<1024> for T
Source§type Aligner = AlignTo1024<T>
type Aligner = AlignTo1024<T>
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<128> for T
impl<T> AlignerFor<128> for T
Source§type Aligner = AlignTo128<T>
type Aligner = AlignTo128<T>
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<16> for T
impl<T> AlignerFor<16> for T
Source§impl<T> AlignerFor<16384> for T
impl<T> AlignerFor<16384> for T
Source§type Aligner = AlignTo16384<T>
type Aligner = AlignTo16384<T>
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<2> for T
impl<T> AlignerFor<2> for T
Source§impl<T> AlignerFor<2048> for T
impl<T> AlignerFor<2048> for T
Source§type Aligner = AlignTo2048<T>
type Aligner = AlignTo2048<T>
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<256> for T
impl<T> AlignerFor<256> for T
Source§type Aligner = AlignTo256<T>
type Aligner = AlignTo256<T>
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<32> for T
impl<T> AlignerFor<32> for T
Source§impl<T> AlignerFor<32768> for T
impl<T> AlignerFor<32768> for T
Source§type Aligner = AlignTo32768<T>
type Aligner = AlignTo32768<T>
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<4> for T
impl<T> AlignerFor<4> for T
Source§impl<T> AlignerFor<4096> for T
impl<T> AlignerFor<4096> for T
Source§type Aligner = AlignTo4096<T>
type Aligner = AlignTo4096<T>
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<512> for T
impl<T> AlignerFor<512> for T
Source§type Aligner = AlignTo512<T>
type Aligner = AlignTo512<T>
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<64> for T
impl<T> AlignerFor<64> for T
Source§impl<T> AlignerFor<8> for T
impl<T> AlignerFor<8> for T
Source§impl<T> AlignerFor<8192> for T
impl<T> AlignerFor<8192> for T
Source§type Aligner = AlignTo8192<T>
type Aligner = AlignTo8192<T>
AlignTo* type which aligns Self to ALIGNMENT.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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<'a, T> RCowCompatibleRef<'a> for Twhere
T: Clone + 'a,
impl<'a, T> RCowCompatibleRef<'a> for Twhere
T: Clone + 'a,
Source§fn as_c_ref(from: &'a T) -> <T as RCowCompatibleRef<'a>>::RefC
fn as_c_ref(from: &'a T) -> <T as RCowCompatibleRef<'a>>::RefC
Source§fn as_rust_ref(from: <T as RCowCompatibleRef<'a>>::RefC) -> &'a T
fn as_rust_ref(from: <T as RCowCompatibleRef<'a>>::RefC) -> &'a T
Source§impl<S> ROExtAcc for S
impl<S> ROExtAcc for S
Source§fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F
fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F
offset. Read moreSource§fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F
fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F
offset. Read moreSource§fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F
fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F
offset. Read moreSource§fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F
fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F
offset. Read moreSource§impl<S> ROExtOps<Aligned> for S
impl<S> ROExtOps<Aligned> for S
Source§fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F
fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F
offset) with value,
returning the previous value of the field. Read moreSource§fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> Fwhere
F: Copy,
fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> Fwhere
F: Copy,
Source§impl<S> ROExtOps<Unaligned> for S
impl<S> ROExtOps<Unaligned> for S
Source§fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F
fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F
offset) with value,
returning the previous value of the field. Read moreSource§fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> Fwhere
F: Copy,
fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> Fwhere
F: Copy,
Source§impl<T> SelfOps for Twhere
T: ?Sized,
impl<T> SelfOps for Twhere
T: ?Sized,
Source§fn piped<F, U>(self, f: F) -> U
fn piped<F, U>(self, f: F) -> U
Source§fn piped_ref<'a, F, U>(&'a self, f: F) -> Uwhere
F: FnOnce(&'a Self) -> U,
fn piped_ref<'a, F, U>(&'a self, f: F) -> Uwhere
F: FnOnce(&'a Self) -> U,
piped except that the function takes &Self
Useful for functions that take &Self instead of Self. Read moreSource§fn piped_mut<'a, F, U>(&'a mut self, f: F) -> Uwhere
F: FnOnce(&'a mut Self) -> U,
fn piped_mut<'a, F, U>(&'a mut self, f: F) -> Uwhere
F: FnOnce(&'a mut Self) -> U,
piped, except that the function takes &mut Self.
Useful for functions that take &mut Self instead of Self.Source§fn mutated<F>(self, f: F) -> Self
fn mutated<F>(self, f: F) -> Self
Source§fn observe<F>(self, f: F) -> Self
fn observe<F>(self, f: F) -> Self
Source§fn as_ref_<T>(&self) -> &T
fn as_ref_<T>(&self) -> &T
AsRef,
using the turbofish .as_ref_::<_>() syntax. Read moreSource§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.