pub struct CreateTableBuilder {Show 53 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 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_tags: Option<Vec<Tag>>,
pub base_location: Option<String>,
pub external_volume: Option<String>,
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,
}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.
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.
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.
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.
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.
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 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 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 · 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 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 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