mod display;
use super::*;
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub enum Statement {
Analyze(Analyze),
Truncate(Truncate),
Msck(Msck),
Query(Box<Query>),
Insert(Insert),
Directory(Directory),
Copy(Copy),
Update(Update),
Delete(Delete),
CreateView(CreateView),
CreateTable(Box<CreateTable>),
CreateVirtualTable(CreateVirtualTable),
CreateIndex(CreateIndex),
AlterTable(AlterTable),
Drop(Drop),
SetVariable(SetVariable),
ShowVariable(ShowVariable),
ShowCreate(ShowCreate),
ShowColumns(ShowColumns),
StartTransaction(StartTransaction),
SetTransaction(SetTransaction),
Commit(Commit),
Rollback(Rollback),
CreateSchema(CreateSchema),
CreateDatabase(CreateDatabase),
Assert(Assert),
Deallocate(Deallocate),
Execute(Execute),
Prepare(Prepare),
Explain(Explain),
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Analyze {
pub table_name: ObjectName,
pub partitions: Option<Vec<Expr>>,
pub for_columns: bool,
pub columns: Vec<Ident>,
pub cache_metadata: bool,
pub noscan: bool,
pub compute_statistics: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Truncate {
pub table_name: ObjectName,
pub partitions: Option<Vec<Expr>>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Msck {
pub table_name: ObjectName,
pub repair: bool,
pub partition_action: Option<AddDropSync>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Insert {
pub or: Option<SqliteOnConflict>,
pub table_name: ObjectName,
pub columns: Vec<Ident>,
pub overwrite: bool,
pub source: Box<Query>,
pub partitioned: Option<Vec<Expr>>,
pub after_columns: Vec<Ident>,
pub table: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Directory {
pub overwrite: bool,
pub local: bool,
pub path: String,
pub file_format: Option<FileFormat>,
pub source: Box<Query>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Copy {
pub table_name: ObjectName,
pub columns: Vec<Ident>,
pub values: Vec<Option<String>>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Update {
pub table_name: ObjectName,
pub assignments: Vec<Assignment>,
pub selection: Option<Expr>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Delete {
pub table_name: ObjectName,
pub selection: Option<Expr>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct CreateView {
pub or_replace: bool,
pub materialized: bool,
pub name: ObjectName,
pub columns: Vec<Ident>,
pub query: Box<Query>,
pub with_options: Vec<SqlOption>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct CreateTable {
pub or_replace: bool,
pub temporary: bool,
pub external: bool,
pub if_not_exists: bool,
pub name: ObjectName,
pub columns: Vec<ColumnDef>,
pub constraints: Vec<TableConstraint>,
pub hive_distribution: HiveDistributionStyle,
pub hive_formats: Option<HiveFormat>,
pub table_properties: Vec<SqlOption>,
pub with_options: Vec<SqlOption>,
pub file_format: Option<FileFormat>,
pub location: Option<String>,
pub query: Option<Box<Query>>,
pub without_rowid: bool,
pub like: Option<ObjectName>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct CreateVirtualTable {
pub name: ObjectName,
pub if_not_exists: bool,
pub module_name: Ident,
pub module_args: Vec<Ident>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct CreateIndex {
pub name: ObjectName,
pub table_name: ObjectName,
pub columns: Vec<OrderByExpr>,
pub unique: bool,
pub if_not_exists: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct AlterTable {
pub name: ObjectName,
pub operation: AlterTableOperation,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Drop {
pub object_type: ObjectType,
pub if_exists: bool,
pub names: Vec<ObjectName>,
pub cascade: bool,
pub purge: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct SetVariable {
pub local: bool,
pub hivevar: bool,
pub variable: Ident,
pub value: Vec<SetVariableValue>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct ShowVariable {
pub variable: Vec<Ident>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct ShowCreate {
pub obj_type: ShowCreateObject,
pub obj_name: ObjectName,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct ShowColumns {
pub extended: bool,
pub full: bool,
pub table_name: ObjectName,
pub filter: Option<ShowStatementFilter>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct StartTransaction {
pub modes: Vec<TransactionMode>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct SetTransaction {
pub modes: Vec<TransactionMode>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Commit {
pub chain: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Rollback {
pub chain: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct CreateSchema {
pub schema_name: ObjectName,
pub if_not_exists: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct CreateDatabase {
pub db_name: ObjectName,
pub if_not_exists: bool,
pub location: Option<String>,
pub managed_location: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Assert {
pub condition: Expr,
pub message: Option<Expr>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Deallocate {
pub name: Ident,
pub prepare: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Execute {
pub name: Ident,
pub parameters: Vec<Expr>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Prepare {
pub name: Ident,
pub data_types: Vec<DataType>,
pub statement: Box<Statement>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Explain {
pub analyze: bool,
pub verbose: bool,
pub statement: Box<Statement>,
}