pub struct CreateTableBuilder {Show 63 fields
pub or_replace: bool,
pub temporary: bool,
pub external: bool,
pub global: Option<bool>,
pub if_not_exists: bool,
pub transient: bool,
pub volatile: bool,
pub iceberg: bool,
pub snapshot: bool,
pub dynamic: bool,
pub name: ObjectName,
pub columns: Vec<ColumnDef>,
pub constraints: Vec<TableConstraint>,
pub hive_distribution: HiveDistributionStyle,
pub hive_formats: Option<HiveFormat>,
pub file_format: Option<FileFormat>,
pub location: Option<String>,
pub query: Option<Box<Query>>,
pub without_rowid: bool,
pub like: Option<CreateTableLikeKind>,
pub clone: Option<ObjectName>,
pub version: Option<TableVersion>,
pub comment: Option<CommentDef>,
pub on_commit: Option<OnCommit>,
pub on_cluster: Option<Ident>,
pub primary_key: Option<Box<Expr>>,
pub order_by: Option<OneOrManyWithParens<Expr>>,
pub partition_by: Option<Box<Expr>>,
pub cluster_by: Option<WrappedCollection<Vec<Expr>>>,
pub clustered_by: Option<ClusteredBy>,
pub inherits: Option<Vec<ObjectName>>,
pub partition_of: Option<ObjectName>,
pub for_values: Option<ForValues>,
pub strict: bool,
pub copy_grants: bool,
pub enable_schema_evolution: Option<bool>,
pub change_tracking: Option<bool>,
pub data_retention_time_in_days: Option<u64>,
pub max_data_extension_time_in_days: Option<u64>,
pub default_ddl_collation: Option<String>,
pub with_aggregation_policy: Option<ObjectName>,
pub with_row_access_policy: Option<RowAccessPolicy>,
pub with_storage_lifecycle_policy: Option<StorageLifecyclePolicy>,
pub with_tags: Option<Vec<Tag>>,
pub base_location: Option<String>,
pub external_volume: Option<String>,
pub with_connection: Option<ObjectName>,
pub catalog: Option<String>,
pub catalog_sync: Option<String>,
pub storage_serialization_policy: Option<StorageSerializationPolicy>,
pub table_options: CreateTableOptions,
pub target_lag: Option<String>,
pub warehouse: Option<Ident>,
pub refresh_mode: Option<RefreshModeKind>,
pub initialize: Option<InitializeKind>,
pub require_user: bool,
pub diststyle: Option<DistStyle>,
pub distkey: Option<Expr>,
pub sortkey: Option<Vec<Expr>>,
pub backup: Option<bool>,
pub multiset: Option<bool>,
pub fallback: Option<bool>,
pub with_data: Option<WithData>,
}Expand description
Builder for create table statement variant (1).
This structure helps building and accessing a create table with more ease, without needing to:
- Match the enum itself a lot of times; or
- Moving a lot of variables around the code.
§Example
use sqlparser::ast::helpers::stmt_create_table::CreateTableBuilder;
use sqlparser::ast::{ColumnDef, DataType, Ident, ObjectName};
let builder = CreateTableBuilder::new(ObjectName::from(vec![Ident::new("table_name")]))
.if_not_exists(true)
.columns(vec![ColumnDef {
name: Ident::new("c1"),
data_type: DataType::Int(None),
options: vec![],
}]);
// You can access internal elements with ease
assert!(builder.if_not_exists);
// Convert to a statement
assert_eq!(
builder.build().to_string(),
"CREATE TABLE IF NOT EXISTS table_name (c1 INT)"
)Fields§
§or_replace: boolWhether the statement uses OR REPLACE.
temporary: boolWhether the table is TEMPORARY.
external: boolWhether the table is EXTERNAL.
global: Option<bool>Optional GLOBAL flag for dialects that support it.
if_not_exists: boolWhether IF NOT EXISTS was specified.
transient: boolWhether TRANSIENT was specified.
volatile: boolWhether VOLATILE was specified.
iceberg: boolIceberg-specific table flag.
snapshot: boolSNAPSHOT table flag.
dynamic: boolWhether DYNAMIC table option is set.
name: ObjectNameThe table name.
columns: Vec<ColumnDef>Column definitions for the table.
constraints: Vec<TableConstraint>Table-level constraints.
hive_distribution: HiveDistributionStyleHive distribution style.
hive_formats: Option<HiveFormat>Optional Hive format settings.
file_format: Option<FileFormat>Optional file format for storage.
location: Option<String>Optional storage location.
query: Option<Box<Query>>Optional AS SELECT query for the table.
without_rowid: boolWhether WITHOUT ROWID is set.
like: Option<CreateTableLikeKind>Optional LIKE clause kind.
clone: Option<ObjectName>Optional CLONE source object name.
version: Option<TableVersion>Optional table version.
comment: Option<CommentDef>Optional table comment.
on_commit: Option<OnCommit>Optional ON COMMIT behavior.
on_cluster: Option<Ident>Optional cluster identifier.
primary_key: Option<Box<Expr>>Optional primary key expression.
order_by: Option<OneOrManyWithParens<Expr>>Optional ORDER BY for clustering/sorting.
partition_by: Option<Box<Expr>>Optional PARTITION BY expression.
cluster_by: Option<WrappedCollection<Vec<Expr>>>Optional CLUSTER BY expressions.
clustered_by: Option<ClusteredBy>Optional CLUSTERED BY clause.
inherits: Option<Vec<ObjectName>>Optional parent tables (INHERITS).
partition_of: Option<ObjectName>Optional partitioned table (PARTITION OF)
for_values: Option<ForValues>Range of values associated with the partition (FOR VALUES)
strict: boolSTRICT table flag.
copy_grants: boolWhether to copy grants from the source.
enable_schema_evolution: Option<bool>Optional flag for schema evolution support.
change_tracking: Option<bool>Optional change tracking flag.
data_retention_time_in_days: Option<u64>Optional data retention time in days.
max_data_extension_time_in_days: Option<u64>Optional max data extension time in days.
default_ddl_collation: Option<String>Optional default DDL collation.
with_aggregation_policy: Option<ObjectName>Optional aggregation policy object name.
with_row_access_policy: Option<RowAccessPolicy>Optional row access policy applied to the table.
with_storage_lifecycle_policy: Option<StorageLifecyclePolicy>Optional storage lifecycle policy applied to the table.
Optional tags/labels attached to the table metadata.
base_location: Option<String>Optional base location for staged data.
external_volume: Option<String>Optional external volume identifier.
with_connection: Option<ObjectName>WITH CONNECTION clause.
BigQuery
catalog: Option<String>Optional catalog name.
catalog_sync: Option<String>Optional catalog synchronization option.
storage_serialization_policy: Option<StorageSerializationPolicy>Optional storage serialization policy.
table_options: CreateTableOptionsParsed table options from the statement.
target_lag: Option<String>Optional target lag configuration.
warehouse: Option<Ident>Optional warehouse identifier.
refresh_mode: Option<RefreshModeKind>Optional refresh mode for materialized tables.
initialize: Option<InitializeKind>Optional initialization kind for the table.
require_user: boolWhether operations require a user identity.
diststyle: Option<DistStyle>Redshift DISTSTYLE option.
distkey: Option<Expr>Redshift DISTKEY option.
sortkey: Option<Vec<Expr>>Redshift SORTKEY option.
backup: Option<bool>Redshift BACKUP option.
multiset: Option<bool>MULTISET | SET table-kind prefix.
fallback: Option<bool>FALLBACK clause.
with_data: Option<WithData>WITH DATA clause.
Implementations§
Source§impl CreateTableBuilder
impl CreateTableBuilder
Sourcepub fn new(name: ObjectName) -> Self
pub fn new(name: ObjectName) -> Self
Create a new CreateTableBuilder for the given table name.
Sourcepub fn or_replace(self, or_replace: bool) -> Self
pub fn or_replace(self, or_replace: bool) -> Self
Set OR REPLACE for the CREATE TABLE statement.
Sourcepub fn if_not_exists(self, if_not_exists: bool) -> Self
pub fn if_not_exists(self, if_not_exists: bool) -> Self
Set IF NOT EXISTS.
Sourcepub fn constraints(self, constraints: Vec<TableConstraint>) -> Self
pub fn constraints(self, constraints: Vec<TableConstraint>) -> Self
Set table-level constraints.
Sourcepub fn hive_distribution(self, hive_distribution: HiveDistributionStyle) -> Self
pub fn hive_distribution(self, hive_distribution: HiveDistributionStyle) -> Self
Set Hive distribution style.
Sourcepub fn hive_formats(self, hive_formats: Option<HiveFormat>) -> Self
pub fn hive_formats(self, hive_formats: Option<HiveFormat>) -> Self
Set Hive-specific formats.
Sourcepub fn file_format(self, file_format: Option<FileFormat>) -> Self
pub fn file_format(self, file_format: Option<FileFormat>) -> Self
Set file format for the table (e.g., PARQUET).
Sourcepub fn query(self, query: Option<Box<Query>>) -> Self
pub fn query(self, query: Option<Box<Query>>) -> Self
Set an underlying AS SELECT query for the table.
Sourcepub fn without_rowid(self, without_rowid: bool) -> Self
pub fn without_rowid(self, without_rowid: bool) -> Self
Set WITHOUT ROWID option.
Sourcepub fn like(self, like: Option<CreateTableLikeKind>) -> Self
pub fn like(self, like: Option<CreateTableLikeKind>) -> Self
Set LIKE clause for the table.
Sourcepub fn clone_clause(self, clone: Option<ObjectName>) -> Self
pub fn clone_clause(self, clone: Option<ObjectName>) -> Self
Set CLONE source object name.
Sourcepub fn version(self, version: Option<TableVersion>) -> Self
pub fn version(self, version: Option<TableVersion>) -> Self
Set table VERSION.
Sourcepub fn comment_after_column_def(self, comment: Option<CommentDef>) -> Self
pub fn comment_after_column_def(self, comment: Option<CommentDef>) -> Self
Set a comment for the table or following column definitions.
Sourcepub fn on_commit(self, on_commit: Option<OnCommit>) -> Self
pub fn on_commit(self, on_commit: Option<OnCommit>) -> Self
Set ON COMMIT behavior for temporary tables.
Sourcepub fn on_cluster(self, on_cluster: Option<Ident>) -> Self
pub fn on_cluster(self, on_cluster: Option<Ident>) -> Self
Set cluster identifier for the table.
Sourcepub fn primary_key(self, primary_key: Option<Box<Expr>>) -> Self
pub fn primary_key(self, primary_key: Option<Box<Expr>>) -> Self
Set a primary key expression for the table.
Sourcepub fn order_by(self, order_by: Option<OneOrManyWithParens<Expr>>) -> Self
pub fn order_by(self, order_by: Option<OneOrManyWithParens<Expr>>) -> Self
Set ORDER BY clause for clustered/sorted tables.
Sourcepub fn partition_by(self, partition_by: Option<Box<Expr>>) -> Self
pub fn partition_by(self, partition_by: Option<Box<Expr>>) -> Self
Set PARTITION BY expression.
Sourcepub fn cluster_by(
self,
cluster_by: Option<WrappedCollection<Vec<Expr>>>,
) -> Self
pub fn cluster_by( self, cluster_by: Option<WrappedCollection<Vec<Expr>>>, ) -> Self
Set CLUSTER BY expression(s).
Sourcepub fn clustered_by(self, clustered_by: Option<ClusteredBy>) -> Self
pub fn clustered_by(self, clustered_by: Option<ClusteredBy>) -> Self
Set CLUSTERED BY clause.
Sourcepub fn inherits(self, inherits: Option<Vec<ObjectName>>) -> Self
pub fn inherits(self, inherits: Option<Vec<ObjectName>>) -> Self
Set parent tables via INHERITS.
Sourcepub fn partition_of(self, partition_of: Option<ObjectName>) -> Self
pub fn partition_of(self, partition_of: Option<ObjectName>) -> Self
Sets the table which is partitioned to create the current table.
Sourcepub fn for_values(self, for_values: Option<ForValues>) -> Self
pub fn for_values(self, for_values: Option<ForValues>) -> Self
Sets the range of values associated with the partition.
Sourcepub fn copy_grants(self, copy_grants: bool) -> Self
pub fn copy_grants(self, copy_grants: bool) -> Self
Enable copying grants from source object.
Sourcepub fn enable_schema_evolution(
self,
enable_schema_evolution: Option<bool>,
) -> Self
pub fn enable_schema_evolution( self, enable_schema_evolution: Option<bool>, ) -> Self
Enable or disable schema evolution features.
Sourcepub fn change_tracking(self, change_tracking: Option<bool>) -> Self
pub fn change_tracking(self, change_tracking: Option<bool>) -> Self
Enable or disable change tracking.
Sourcepub fn data_retention_time_in_days(
self,
data_retention_time_in_days: Option<u64>,
) -> Self
pub fn data_retention_time_in_days( self, data_retention_time_in_days: Option<u64>, ) -> Self
Set data retention time (in days).
Sourcepub fn max_data_extension_time_in_days(
self,
max_data_extension_time_in_days: Option<u64>,
) -> Self
pub fn max_data_extension_time_in_days( self, max_data_extension_time_in_days: Option<u64>, ) -> Self
Set maximum data extension time (in days).
Sourcepub fn default_ddl_collation(
self,
default_ddl_collation: Option<String>,
) -> Self
pub fn default_ddl_collation( self, default_ddl_collation: Option<String>, ) -> Self
Set default DDL collation.
Sourcepub fn with_aggregation_policy(
self,
with_aggregation_policy: Option<ObjectName>,
) -> Self
pub fn with_aggregation_policy( self, with_aggregation_policy: Option<ObjectName>, ) -> Self
Set aggregation policy object.
Sourcepub fn with_row_access_policy(
self,
with_row_access_policy: Option<RowAccessPolicy>,
) -> Self
pub fn with_row_access_policy( self, with_row_access_policy: Option<RowAccessPolicy>, ) -> Self
Attach a row access policy to the table.
Sourcepub fn with_storage_lifecycle_policy(
self,
with_storage_lifecycle_policy: Option<StorageLifecyclePolicy>,
) -> Self
pub fn with_storage_lifecycle_policy( self, with_storage_lifecycle_policy: Option<StorageLifecyclePolicy>, ) -> Self
Attach a storage lifecycle policy to the table.
Attach tags/labels to the table metadata.
Sourcepub fn base_location(self, base_location: Option<String>) -> Self
pub fn base_location(self, base_location: Option<String>) -> Self
Set a base storage location for staged data.
Sourcepub fn external_volume(self, external_volume: Option<String>) -> Self
pub fn external_volume(self, external_volume: Option<String>) -> Self
Set an external volume identifier.
Sourcepub fn with_connection(self, with_connection: Option<ObjectName>) -> Self
pub fn with_connection(self, with_connection: Option<ObjectName>) -> Self
Set the WITH CONNECTION clause.
Sourcepub fn catalog_sync(self, catalog_sync: Option<String>) -> Self
pub fn catalog_sync(self, catalog_sync: Option<String>) -> Self
Set catalog synchronization option.
Sourcepub fn storage_serialization_policy(
self,
storage_serialization_policy: Option<StorageSerializationPolicy>,
) -> Self
pub fn storage_serialization_policy( self, storage_serialization_policy: Option<StorageSerializationPolicy>, ) -> Self
Set a storage serialization policy.
Sourcepub fn table_options(self, table_options: CreateTableOptions) -> Self
pub fn table_options(self, table_options: CreateTableOptions) -> Self
Set arbitrary table options parsed from the statement.
Sourcepub fn target_lag(self, target_lag: Option<String>) -> Self
pub fn target_lag(self, target_lag: Option<String>) -> Self
Set a target lag configuration (dialect-specific).
Sourcepub fn warehouse(self, warehouse: Option<Ident>) -> Self
pub fn warehouse(self, warehouse: Option<Ident>) -> Self
Associate the table with a warehouse identifier.
Sourcepub fn refresh_mode(self, refresh_mode: Option<RefreshModeKind>) -> Self
pub fn refresh_mode(self, refresh_mode: Option<RefreshModeKind>) -> Self
Set refresh mode for materialized/managed tables.
Sourcepub fn initialize(self, initialize: Option<InitializeKind>) -> Self
pub fn initialize(self, initialize: Option<InitializeKind>) -> Self
Set initialization mode for the table.
Sourcepub fn require_user(self, require_user: bool) -> Self
pub fn require_user(self, require_user: bool) -> Self
Require a user identity for table operations.
Sourcepub fn multiset(self, multiset: Option<bool>) -> Self
pub fn multiset(self, multiset: Option<bool>) -> Self
Set MULTISET | SET table-kind prefix.
Some(true) => MULTISET, Some(false) => SET.
Sourcepub fn build(self) -> CreateTable
pub fn build(self) -> CreateTable
Consume the builder and produce a CreateTable.
Trait Implementations§
Source§impl Clone for CreateTableBuilder
impl Clone for CreateTableBuilder
Source§fn clone(&self) -> CreateTableBuilder
fn clone(&self) -> CreateTableBuilder
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CreateTableBuilder
impl Debug for CreateTableBuilder
Source§impl<'de> Deserialize<'de> for CreateTableBuilder
impl<'de> Deserialize<'de> for CreateTableBuilder
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for CreateTableBuilder
Source§impl From<CreateTable> for CreateTableBuilder
impl From<CreateTable> for CreateTableBuilder
Source§fn from(table: CreateTable) -> Self
fn from(table: CreateTable) -> Self
Source§impl Hash for CreateTableBuilder
impl Hash for CreateTableBuilder
Source§impl PartialEq for CreateTableBuilder
impl PartialEq for CreateTableBuilder
Source§impl Serialize for CreateTableBuilder
impl Serialize for CreateTableBuilder
impl StructuralPartialEq for CreateTableBuilder
Source§impl TryFrom<Statement> for CreateTableBuilder
impl TryFrom<Statement> for CreateTableBuilder
Source§impl Visit for CreateTableBuilder
impl Visit for CreateTableBuilder
Source§impl VisitMut for CreateTableBuilder
impl VisitMut for CreateTableBuilder
Source§fn visit<V: VisitorMut>(&mut self, visitor: &mut V) -> ControlFlow<V::Break>
fn visit<V: VisitorMut>(&mut self, visitor: &mut V) -> ControlFlow<V::Break>
VisitorMut. Read more