Skip to content

Commit af11378

Browse files
committed
Add support for more create table options after AS
1 parent 93450cc commit af11378

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

src/dialect/snowflake.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -452,7 +452,6 @@ pub fn parse_create_table(
452452
Keyword::AS => {
453453
let query = parser.parse_query()?;
454454
builder = builder.query(Some(query));
455-
break;
456455
}
457456
Keyword::CLONE => {
458457
let clone = parser.parse_object_name(false).ok();
@@ -588,7 +587,7 @@ pub fn parse_create_table(
588587
builder = builder.columns(columns).constraints(constraints);
589588
}
590589
Token::EOF => {
591-
if builder.columns.is_empty() {
590+
if builder.columns.is_empty() && builder.query.is_none() {
592591
return Err(ParserError::ParserError(
593592
"unexpected end of input".to_string(),
594593
));
@@ -597,7 +596,7 @@ pub fn parse_create_table(
597596
break;
598597
}
599598
Token::SemiColon => {
600-
if builder.columns.is_empty() {
599+
if builder.columns.is_empty() && builder.query.is_none() {
601600
return Err(ParserError::ParserError(
602601
"unexpected end of input".to_string(),
603602
));

tests/sqlparser_snowflake.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -995,6 +995,16 @@ fn test_snowflake_create_iceberg_table_without_location() {
995995
);
996996
}
997997

998+
#[test]
999+
fn test_snowflake_create_table_as() {
1000+
// Test additional options after AS (query)
1001+
snowflake()
1002+
.parse_sql_statements(
1003+
"CREATE TEMP TABLE dst AS (SELECT * FROM src) ON COMMIT PRESERVE ROWS",
1004+
)
1005+
.unwrap();
1006+
}
1007+
9981008
#[test]
9991009
fn parse_sf_create_or_replace_view_with_comment_missing_equal() {
10001010
assert!(snowflake_and_generic()

0 commit comments

Comments
 (0)