mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-07-07 17:04:59 +00:00
Allow IF NOT EXISTS
after table name for Snowflake (#1881)
This commit is contained in:
parent
9fc9009b94
commit
c2e83d49f6
2 changed files with 24 additions and 0 deletions
|
@ -560,6 +560,9 @@ pub fn parse_create_table(
|
||||||
builder.storage_serialization_policy =
|
builder.storage_serialization_policy =
|
||||||
Some(parse_storage_serialization_policy(parser)?);
|
Some(parse_storage_serialization_policy(parser)?);
|
||||||
}
|
}
|
||||||
|
Keyword::IF if parser.parse_keywords(&[Keyword::NOT, Keyword::EXISTS]) => {
|
||||||
|
builder = builder.if_not_exists(true);
|
||||||
|
}
|
||||||
_ => {
|
_ => {
|
||||||
return parser.expected("end of statement", next_token);
|
return parser.expected("end of statement", next_token);
|
||||||
}
|
}
|
||||||
|
|
|
@ -446,6 +446,27 @@ fn test_snowflake_create_table_if_not_exists() {
|
||||||
}
|
}
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (sql, parse_to) in [
|
||||||
|
(
|
||||||
|
r#"CREATE TABLE IF NOT EXISTS "A"."B"."C" (v VARIANT)"#,
|
||||||
|
r#"CREATE TABLE IF NOT EXISTS "A"."B"."C" (v VARIANT)"#,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
r#"CREATE TABLE "A"."B"."C" IF NOT EXISTS (v VARIANT)"#,
|
||||||
|
r#"CREATE TABLE IF NOT EXISTS "A"."B"."C" (v VARIANT)"#,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
r#"CREATE TRANSIENT TABLE IF NOT EXISTS "A"."B"."C" (v VARIANT)"#,
|
||||||
|
r#"CREATE TRANSIENT TABLE IF NOT EXISTS "A"."B"."C" (v VARIANT)"#,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
r#"CREATE TRANSIENT TABLE "A"."B"."C" IF NOT EXISTS (v VARIANT)"#,
|
||||||
|
r#"CREATE TRANSIENT TABLE IF NOT EXISTS "A"."B"."C" (v VARIANT)"#,
|
||||||
|
),
|
||||||
|
] {
|
||||||
|
snowflake().one_statement_parses_to(sql, parse_to);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue