Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ impl Parser {
Ok(Some(alter_object(kind, head, action, parts)))
}

/// Parse ALTER SHARE: UNSET COMMENT typed; ADD, REMOVE, SET and UNSET TAG are left to the fallback.
/// Parse ALTER SHARE: UNSET COMMENT typed; ADD, REMOVE, SET and other UNSETs are left to the fallback.
fn parse_alter_share(&mut self) -> Result<Option<Expression>> {
let start = self.current - 1;
let head = self.parse_alter_object_head()?;
Expand All @@ -186,8 +186,10 @@ impl Parser {
self.text_at(0).unwrap_or_default().as_str(),
self.text_at(1).as_deref(),
) {
("UNSET", Some("TAG")) | ("ADD" | "REMOVE" | "SET", _) => {}
("UNSET", _) => return Err(self.parse_error("Expected COMMENT or TAG after UNSET")),
("UNSET", None | Some(";")) => {
return Err(self.parse_error("Expected a property after UNSET"))
}
("ADD" | "REMOVE" | "SET" | "UNSET", _) => {}
_ => return Err(self.parse_error("Expected ADD, REMOVE, SET or UNSET")),
}
self.current = start;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ fn given_snowflake_table_sequence_and_share_actions_when_parsing_then_only_docum
AcceptanceTestCase { description: "a file is no name (recorded syntax error)", sql: "ALTER EXTERNAL TABLE v1 REMOVE FILES ( m1 ) ;", dialect: Dialect::Snowflake, expected_accepted: false },
AcceptanceTestCase { description: "a share unsets its comment (recorded semantic error)", sql: "ALTER SHARE v1 UNSET COMMENT ;", dialect: Dialect::Snowflake, expected_accepted: true },
AcceptanceTestCase { description: "a share keeps its ADD action", sql: "ALTER SHARE v1 ADD ACCOUNTS = a1 ;", dialect: Dialect::Snowflake, expected_accepted: true },
AcceptanceTestCase { description: "a share unsets COMMENT or TAG only", sql: "ALTER SHARE v1 UNSET m1 ;", dialect: Dialect::Snowflake, expected_accepted: false },
AcceptanceTestCase { description: "a share unsets any named property (recorded semantic error 1420)", sql: "ALTER SHARE v1 UNSET v1 ;", dialect: Dialect::Snowflake, expected_accepted: true },
AcceptanceTestCase { description: "UNSET names a property (catalogued reject)", sql: "ALTER SHARE v1 UNSET ;", dialect: Dialect::Snowflake, expected_accepted: false },
AcceptanceTestCase { description: "a user group is an organization user group (recorded syntax error)", sql: "ALTER USER GROUP v1 ADD ORGANIZATION USERS v1 ;", dialect: Dialect::Snowflake, expected_accepted: false },
AcceptanceTestCase { description: "an organization user group adds users", sql: "ALTER ORGANIZATION USER GROUP IF EXISTS v1 ADD ORGANIZATION USERS v1 , v1 ;", dialect: Dialect::Snowflake, expected_accepted: true },
];
Expand Down