Skip to content

Commit e5fb33f

Browse files
committed
Add support for more create table options after AS
1 parent fd4934e commit e5fb33f

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
@@ -469,7 +469,6 @@ pub fn parse_create_table(
469469
Keyword::AS => {
470470
let query = parser.parse_query()?;
471471
builder = builder.query(Some(query));
472-
break;
473472
}
474473
Keyword::CLONE => {
475474
let clone = parser.parse_object_name(false).ok();
@@ -605,7 +604,7 @@ pub fn parse_create_table(
605604
builder = builder.columns(columns).constraints(constraints);
606605
}
607606
Token::EOF => {
608-
if builder.columns.is_empty() {
607+
if builder.columns.is_empty() && builder.query.is_none() {
609608
return Err(ParserError::ParserError(
610609
"unexpected end of input".to_string(),
611610
));
@@ -614,7 +613,7 @@ pub fn parse_create_table(
614613
break;
615614
}
616615
Token::SemiColon => {
617-
if builder.columns.is_empty() {
616+
if builder.columns.is_empty() && builder.query.is_none() {
618617
return Err(ParserError::ParserError(
619618
"unexpected end of input".to_string(),
620619
));

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)