File tree Expand file tree Collapse file tree 2 files changed +24
-0
lines changed Expand file tree Collapse file tree 2 files changed +24
-0
lines changed Original file line number Diff line number Diff line change @@ -560,6 +560,9 @@ pub fn parse_create_table(
560
560
builder. storage_serialization_policy =
561
561
Some ( parse_storage_serialization_policy ( parser) ?) ;
562
562
}
563
+ Keyword :: IF if parser. parse_keywords ( & [ Keyword :: NOT , Keyword :: EXISTS ] ) => {
564
+ builder = builder. if_not_exists ( true ) ;
565
+ }
563
566
_ => {
564
567
return parser. expected ( "end of statement" , next_token) ;
565
568
}
Original file line number Diff line number Diff line change @@ -446,6 +446,27 @@ fn test_snowflake_create_table_if_not_exists() {
446
446
}
447
447
_ => unreachable ! ( ) ,
448
448
}
449
+
450
+ for ( sql, parse_to) in [
451
+ (
452
+ r#"CREATE TABLE IF NOT EXISTS "A"."B"."C" (v VARIANT)"# ,
453
+ r#"CREATE TABLE IF NOT EXISTS "A"."B"."C" (v VARIANT)"# ,
454
+ ) ,
455
+ (
456
+ r#"CREATE TABLE "A"."B"."C" IF NOT EXISTS (v VARIANT)"# ,
457
+ r#"CREATE TABLE IF NOT EXISTS "A"."B"."C" (v VARIANT)"# ,
458
+ ) ,
459
+ (
460
+ r#"CREATE TRANSIENT TABLE IF NOT EXISTS "A"."B"."C" (v VARIANT)"# ,
461
+ r#"CREATE TRANSIENT TABLE IF NOT EXISTS "A"."B"."C" (v VARIANT)"# ,
462
+ ) ,
463
+ (
464
+ r#"CREATE TRANSIENT TABLE "A"."B"."C" IF NOT EXISTS (v VARIANT)"# ,
465
+ r#"CREATE TRANSIENT TABLE IF NOT EXISTS "A"."B"."C" (v VARIANT)"# ,
466
+ ) ,
467
+ ] {
468
+ snowflake ( ) . one_statement_parses_to ( sql, parse_to) ;
469
+ }
449
470
}
450
471
451
472
#[ test]
You can’t perform that action at this time.
0 commit comments