mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-09-27 07:59:11 +00:00
Snowflake: Support GRANT CREATE SCHEMA
GRANT .. ON ALL FUNCTIONS IN SCHEMA
(#1964)
This commit is contained in:
parent
40b187f32a
commit
6a5ef48921
3 changed files with 24 additions and 0 deletions
|
@ -6771,6 +6771,7 @@ pub enum ActionCreateObjectType {
|
||||||
OrganiationListing,
|
OrganiationListing,
|
||||||
ReplicationGroup,
|
ReplicationGroup,
|
||||||
Role,
|
Role,
|
||||||
|
Schema,
|
||||||
Share,
|
Share,
|
||||||
User,
|
User,
|
||||||
Warehouse,
|
Warehouse,
|
||||||
|
@ -6792,6 +6793,7 @@ impl fmt::Display for ActionCreateObjectType {
|
||||||
ActionCreateObjectType::OrganiationListing => write!(f, "ORGANIZATION LISTING"),
|
ActionCreateObjectType::OrganiationListing => write!(f, "ORGANIZATION LISTING"),
|
||||||
ActionCreateObjectType::ReplicationGroup => write!(f, "REPLICATION GROUP"),
|
ActionCreateObjectType::ReplicationGroup => write!(f, "REPLICATION GROUP"),
|
||||||
ActionCreateObjectType::Role => write!(f, "ROLE"),
|
ActionCreateObjectType::Role => write!(f, "ROLE"),
|
||||||
|
ActionCreateObjectType::Schema => write!(f, "SCHEMA"),
|
||||||
ActionCreateObjectType::Share => write!(f, "SHARE"),
|
ActionCreateObjectType::Share => write!(f, "SHARE"),
|
||||||
ActionCreateObjectType::User => write!(f, "USER"),
|
ActionCreateObjectType::User => write!(f, "USER"),
|
||||||
ActionCreateObjectType::Warehouse => write!(f, "WAREHOUSE"),
|
ActionCreateObjectType::Warehouse => write!(f, "WAREHOUSE"),
|
||||||
|
@ -7029,6 +7031,8 @@ pub enum GrantObjects {
|
||||||
AllMaterializedViewsInSchema { schemas: Vec<ObjectName> },
|
AllMaterializedViewsInSchema { schemas: Vec<ObjectName> },
|
||||||
/// Grant privileges on `ALL EXTERNAL TABLES IN SCHEMA <schema_name> [, ...]`
|
/// Grant privileges on `ALL EXTERNAL TABLES IN SCHEMA <schema_name> [, ...]`
|
||||||
AllExternalTablesInSchema { schemas: Vec<ObjectName> },
|
AllExternalTablesInSchema { schemas: Vec<ObjectName> },
|
||||||
|
/// Grant privileges on `ALL FUNCTIONS IN SCHEMA <schema_name> [, ...]`
|
||||||
|
AllFunctionsInSchema { schemas: Vec<ObjectName> },
|
||||||
/// Grant privileges on `FUTURE SCHEMAS IN DATABASE <database_name> [, ...]`
|
/// Grant privileges on `FUTURE SCHEMAS IN DATABASE <database_name> [, ...]`
|
||||||
FutureSchemasInDatabase { databases: Vec<ObjectName> },
|
FutureSchemasInDatabase { databases: Vec<ObjectName> },
|
||||||
/// Grant privileges on `FUTURE TABLES IN SCHEMA <schema_name> [, ...]`
|
/// Grant privileges on `FUTURE TABLES IN SCHEMA <schema_name> [, ...]`
|
||||||
|
@ -7149,6 +7153,13 @@ impl fmt::Display for GrantObjects {
|
||||||
display_comma_separated(schemas)
|
display_comma_separated(schemas)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
GrantObjects::AllFunctionsInSchema { schemas } => {
|
||||||
|
write!(
|
||||||
|
f,
|
||||||
|
"ALL FUNCTIONS IN SCHEMA {}",
|
||||||
|
display_comma_separated(schemas)
|
||||||
|
)
|
||||||
|
}
|
||||||
GrantObjects::FutureSchemasInDatabase { databases } => {
|
GrantObjects::FutureSchemasInDatabase { databases } => {
|
||||||
write!(
|
write!(
|
||||||
f,
|
f,
|
||||||
|
|
|
@ -14108,6 +14108,15 @@ impl<'a> Parser<'a> {
|
||||||
Some(GrantObjects::AllMaterializedViewsInSchema {
|
Some(GrantObjects::AllMaterializedViewsInSchema {
|
||||||
schemas: self.parse_comma_separated(|p| p.parse_object_name(false))?,
|
schemas: self.parse_comma_separated(|p| p.parse_object_name(false))?,
|
||||||
})
|
})
|
||||||
|
} else if self.parse_keywords(&[
|
||||||
|
Keyword::ALL,
|
||||||
|
Keyword::FUNCTIONS,
|
||||||
|
Keyword::IN,
|
||||||
|
Keyword::SCHEMA,
|
||||||
|
]) {
|
||||||
|
Some(GrantObjects::AllFunctionsInSchema {
|
||||||
|
schemas: self.parse_comma_separated(|p| p.parse_object_name(false))?,
|
||||||
|
})
|
||||||
} else if self.parse_keywords(&[
|
} else if self.parse_keywords(&[
|
||||||
Keyword::FUTURE,
|
Keyword::FUTURE,
|
||||||
Keyword::SCHEMAS,
|
Keyword::SCHEMAS,
|
||||||
|
@ -14414,6 +14423,8 @@ impl<'a> Parser<'a> {
|
||||||
Some(ActionCreateObjectType::Integration)
|
Some(ActionCreateObjectType::Integration)
|
||||||
} else if self.parse_keyword(Keyword::ROLE) {
|
} else if self.parse_keyword(Keyword::ROLE) {
|
||||||
Some(ActionCreateObjectType::Role)
|
Some(ActionCreateObjectType::Role)
|
||||||
|
} else if self.parse_keyword(Keyword::SCHEMA) {
|
||||||
|
Some(ActionCreateObjectType::Schema)
|
||||||
} else if self.parse_keyword(Keyword::SHARE) {
|
} else if self.parse_keyword(Keyword::SHARE) {
|
||||||
Some(ActionCreateObjectType::Share)
|
Some(ActionCreateObjectType::Share)
|
||||||
} else if self.parse_keyword(Keyword::USER) {
|
} else if self.parse_keyword(Keyword::USER) {
|
||||||
|
|
|
@ -9528,6 +9528,7 @@ fn parse_grant() {
|
||||||
verified_stmt("GRANT SELECT ON ALL VIEWS IN SCHEMA db1.sc1 TO ROLE role1");
|
verified_stmt("GRANT SELECT ON ALL VIEWS IN SCHEMA db1.sc1 TO ROLE role1");
|
||||||
verified_stmt("GRANT SELECT ON ALL MATERIALIZED VIEWS IN SCHEMA db1.sc1 TO ROLE role1");
|
verified_stmt("GRANT SELECT ON ALL MATERIALIZED VIEWS IN SCHEMA db1.sc1 TO ROLE role1");
|
||||||
verified_stmt("GRANT SELECT ON ALL EXTERNAL TABLES IN SCHEMA db1.sc1 TO ROLE role1");
|
verified_stmt("GRANT SELECT ON ALL EXTERNAL TABLES IN SCHEMA db1.sc1 TO ROLE role1");
|
||||||
|
verified_stmt("GRANT USAGE ON ALL FUNCTIONS IN SCHEMA db1.sc1 TO ROLE role1");
|
||||||
verified_stmt("GRANT USAGE ON SCHEMA sc1 TO a:b");
|
verified_stmt("GRANT USAGE ON SCHEMA sc1 TO a:b");
|
||||||
verified_stmt("GRANT USAGE ON SCHEMA sc1 TO GROUP group1");
|
verified_stmt("GRANT USAGE ON SCHEMA sc1 TO GROUP group1");
|
||||||
verified_stmt("GRANT OWNERSHIP ON ALL TABLES IN SCHEMA DEV_STAS_ROGOZHIN TO ROLE ANALYST");
|
verified_stmt("GRANT OWNERSHIP ON ALL TABLES IN SCHEMA DEV_STAS_ROGOZHIN TO ROLE ANALYST");
|
||||||
|
@ -9551,6 +9552,7 @@ fn parse_grant() {
|
||||||
verified_stmt("GRANT USAGE ON FUNCTION db1.sc1.foo(INT) TO ROLE role1");
|
verified_stmt("GRANT USAGE ON FUNCTION db1.sc1.foo(INT) TO ROLE role1");
|
||||||
verified_stmt("GRANT ROLE role1 TO ROLE role2");
|
verified_stmt("GRANT ROLE role1 TO ROLE role2");
|
||||||
verified_stmt("GRANT ROLE role1 TO USER user");
|
verified_stmt("GRANT ROLE role1 TO USER user");
|
||||||
|
verified_stmt("GRANT CREATE SCHEMA ON DATABASE db1 TO ROLE role1");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue