Skip to content

Commit deaa882

Browse files
authored
Merge pull request #43 from sqlstack-io/fix/snowflake-alter-policies
fix(syntax): parse Snowflake ALTER of policies and account-level objects
2 parents 61f08a2 + c12439e commit deaa882

7 files changed

Lines changed: 864 additions & 8 deletions

File tree

‎crates/sqlquack-syntax/src/parser/_helpers/ddl/constraints.rs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1458,7 +1458,7 @@ impl Parser {
14581458
/// Parse a Snowflake DROP of `kind`, already consumed: the name and the options that kind takes.
14591459
fn parse_drop_snowflake_object(&mut self, kind: String) -> Result<Expression> {
14601460
let if_exists = self.match_keywords(&[TokenType::If, TokenType::Exists]);
1461-
let name = self.parse_table_ref()?;
1461+
let name = self.parse_object_name()?;
14621462
let (cascade, restrict, force) = match kind.as_str() {
14631463
"APPLICATION" | "OPENFLOW RUNTIME" => {
14641464
(self.match_token(TokenType::Cascade), false, false)
@@ -1587,7 +1587,7 @@ impl Parser {
15871587
TokenType::View => self.parse_alter_view_with_modifiers(None, None, None),
15881588
TokenType::Index => self.parse_alter_index(),
15891589
TokenType::Sequence => self.parse_alter_sequence(),
1590-
_ if self.check_identifier("SESSION") => {
1590+
_ if self.check_identifier("SESSION") && !self.check_next_identifier("POLICY") => {
15911591
self.skip();
15921592
match self.parse_alter_session()? {
15931593
Some(expr) => Ok(expr),

‎crates/sqlquack-syntax/src/parser/_helpers/ddl/mod.rs‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ pub(crate) mod create_table_forms;
88
pub(crate) mod explain;
99
pub(crate) mod scripting;
1010
pub(crate) mod snowflake_alter;
11+
pub(crate) mod snowflake_alter_account;
1112
pub(crate) mod snowflake_alter_objects;
1213
pub(crate) mod snowflake_alter_resources;
1314
pub(crate) mod table_options;

‎crates/sqlquack-syntax/src/parser/_helpers/ddl/snowflake_alter.rs‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ impl Parser {
7171
if self.match_token(TokenType::Function) || self.match_identifier("FUNCTION") {
7272
return self.parse_alter_function().map(Some);
7373
}
74+
if let Some(alter) = self.parse_alter_snowflake_group()? {
75+
return Ok(Some(alter));
76+
}
7477
if let Some(alter) = self.parse_alter_snowflake_resource()? {
7578
return Ok(Some(alter));
7679
}

0 commit comments

Comments
 (0)