diff --git a/src/ast/mod.rs b/src/ast/mod.rs index 467678602..52ee84669 100644 --- a/src/ast/mod.rs +++ b/src/ast/mod.rs @@ -6263,6 +6263,7 @@ pub enum Action { Operate, OverrideShareRestrictions, Ownership, + Public, PurchaseDataExchangeListing, Read, ReadSession, @@ -6341,6 +6342,7 @@ impl fmt::Display for Action { Action::Operate => f.write_str("OPERATE")?, Action::OverrideShareRestrictions => f.write_str("OVERRIDE SHARE RESTRICTIONS")?, Action::Ownership => f.write_str("OWNERSHIP")?, + Action::Public => f.write_str("PUBLIC")?, Action::PurchaseDataExchangeListing => f.write_str("PURCHASE DATA EXCHANGE LISTING")?, Action::Read => f.write_str("READ")?, Action::ReadSession => f.write_str("READ SESSION")?, diff --git a/src/parser/mod.rs b/src/parser/mod.rs index f07e8919a..0d51ac10d 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -16063,6 +16063,8 @@ impl<'a> Parser<'a> { Ok(Action::Ownership) } else if self.parse_keyword(Keyword::DROP) { Ok(Action::Drop) + } else if self.parse_keyword(Keyword::PUBLIC) { + Ok(Action::Public) } else { self.expected("a privilege keyword", self.peek_token())? } diff --git a/tests/sqlparser_common.rs b/tests/sqlparser_common.rs index 9f549e4d0..b2970e557 100644 --- a/tests/sqlparser_common.rs +++ b/tests/sqlparser_common.rs @@ -9705,6 +9705,9 @@ fn parse_grant() { verified_stmt("GRANT ROLE role1 TO ROLE role2"); verified_stmt("GRANT ROLE role1 TO USER user"); verified_stmt("GRANT CREATE SCHEMA ON DATABASE db1 TO ROLE role1"); + + all_dialects_where(|d| d.supports_user_host_grantee()) + .verified_stmt("GRANT PUBLIC TO 'AAA'@'AAA'"); } #[test]