Skip to content

Commit 55d45c4

Browse files
committed
Add support for more create table options after AS
1 parent ee31b64 commit 55d45c4

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
@@ -555,7 +555,6 @@ pub fn parse_create_table(
555555
Keyword::AS => {
556556
let query = parser.parse_query()?;
557557
builder = builder.query(Some(query));
558-
break;
559558
}
560559
Keyword::CLONE => {
561560
let clone = parser.parse_object_name(false).ok();
@@ -691,7 +690,7 @@ pub fn parse_create_table(
691690
builder = builder.columns(columns).constraints(constraints);
692691
}
693692
Token::EOF => {
694-
if builder.columns.is_empty() {
693+
if builder.columns.is_empty() && builder.query.is_none() {
695694
return Err(ParserError::ParserError(
696695
"unexpected end of input".to_string(),
697696
));
@@ -700,7 +699,7 @@ pub fn parse_create_table(
700699
break;
701700
}
702701
Token::SemiColon => {
703-
if builder.columns.is_empty() {
702+
if builder.columns.is_empty() && builder.query.is_none() {
704703
return Err(ParserError::ParserError(
705704
"unexpected end of input".to_string(),
706705
));

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)