Skip to content

Commit 1dce3f0

Browse files
committed
Added a few more object types
1 parent e1e0087 commit 1dce3f0

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed

src/ast/mod.rs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6930,12 +6930,22 @@ pub enum GrantObjects {
69306930
AllTablesInSchema { schemas: Vec<ObjectName> },
69316931
/// Grant privileges on `ALL VIEWS IN SCHEMA <schema_name> [, ...]`
69326932
AllViewsInSchema { schemas: Vec<ObjectName> },
6933+
/// Grant privileges on `ALL MATERIALIZED VIEWS IN SCHEMA <schema_name> [, ...]`
6934+
AllMaterializedViewsInSchema { schemas: Vec<ObjectName> },
6935+
/// Grant privileges on `ALL EXTERNAL TABLES IN SCHEMA <schema_name> [, ...]`
6936+
AllExternalTablesInSchema { schemas: Vec<ObjectName> },
69336937
/// Grant privileges on `FUTURE SCHEMAS IN DATABASE <database_name> [, ...]`
69346938
FutureSchemasInDatabase { databases: Vec<ObjectName> },
69356939
/// Grant privileges on `FUTURE TABLES IN SCHEMA <schema_name> [, ...]`
69366940
FutureTablesInSchema { schemas: Vec<ObjectName> },
69376941
/// Grant privileges on `FUTURE VIEWS IN SCHEMA <schema_name> [, ...]`
69386942
FutureViewsInSchema { schemas: Vec<ObjectName> },
6943+
/// Grant privileges on `FUTURE EXTERNAL TABLES IN SCHEMA <schema_name> [, ...]`
6944+
FutureExternalTablesInSchema { schemas: Vec<ObjectName> },
6945+
/// Grant privileges on `FUTURE MATERIALIZED VIEWS IN SCHEMA <schema_name> [, ...]`
6946+
FutureMaterializedViewsInSchema { schemas: Vec<ObjectName> },
6947+
/// Grant privileges on `FUTURE SEQUENCES IN SCHEMA <schema_name> [, ...]`
6948+
FutureSequencesInSchema { schemas: Vec<ObjectName> },
69396949
/// Grant privileges on specific databases
69406950
Databases(Vec<ObjectName>),
69416951
/// Grant privileges on specific schemas
@@ -7004,13 +7014,27 @@ impl fmt::Display for GrantObjects {
70047014
display_comma_separated(schemas)
70057015
)
70067016
}
7017+
GrantObjects::AllExternalTablesInSchema { schemas } => {
7018+
write!(
7019+
f,
7020+
"ALL EXTERNAL TABLES IN SCHEMA {}",
7021+
display_comma_separated(schemas)
7022+
)
7023+
}
70077024
GrantObjects::AllViewsInSchema { schemas } => {
70087025
write!(
70097026
f,
70107027
"ALL VIEWS IN SCHEMA {}",
70117028
display_comma_separated(schemas)
70127029
)
70137030
}
7031+
GrantObjects::AllMaterializedViewsInSchema { schemas } => {
7032+
write!(
7033+
f,
7034+
"ALL MATERIALIZED VIEWS IN SCHEMA {}",
7035+
display_comma_separated(schemas)
7036+
)
7037+
}
70147038
GrantObjects::FutureSchemasInDatabase { databases } => {
70157039
write!(
70167040
f,
@@ -7025,13 +7049,34 @@ impl fmt::Display for GrantObjects {
70257049
display_comma_separated(schemas)
70267050
)
70277051
}
7052+
GrantObjects::FutureExternalTablesInSchema { schemas } => {
7053+
write!(
7054+
f,
7055+
"FUTURE EXTERNAL TABLES IN SCHEMA {}",
7056+
display_comma_separated(schemas)
7057+
)
7058+
}
70287059
GrantObjects::FutureViewsInSchema { schemas } => {
70297060
write!(
70307061
f,
70317062
"FUTURE VIEWS IN SCHEMA {}",
70327063
display_comma_separated(schemas)
70337064
)
70347065
}
7066+
GrantObjects::FutureMaterializedViewsInSchema { schemas } => {
7067+
write!(
7068+
f,
7069+
"FUTURE MATERIALIZED VIEWS IN SCHEMA {}",
7070+
display_comma_separated(schemas)
7071+
)
7072+
}
7073+
GrantObjects::FutureSequencesInSchema { schemas } => {
7074+
write!(
7075+
f,
7076+
"FUTURE SEQUENCES IN SCHEMA {}",
7077+
display_comma_separated(schemas)
7078+
)
7079+
}
70357080
GrantObjects::ResourceMonitors(objects) => {
70367081
write!(f, "RESOURCE MONITOR {}", display_comma_separated(objects))
70377082
}

src/parser/mod.rs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13897,6 +13897,16 @@ impl<'a> Parser<'a> {
1389713897
Some(GrantObjects::AllTablesInSchema {
1389813898
schemas: self.parse_comma_separated(|p| p.parse_object_name(false))?,
1389913899
})
13900+
} else if self.parse_keywords(&[
13901+
Keyword::ALL,
13902+
Keyword::EXTERNAL,
13903+
Keyword::TABLES,
13904+
Keyword::IN,
13905+
Keyword::SCHEMA,
13906+
]) {
13907+
Some(GrantObjects::AllExternalTablesInSchema {
13908+
schemas: self.parse_comma_separated(|p| p.parse_object_name(false))?,
13909+
})
1390013910
} else if self.parse_keywords(&[
1390113911
Keyword::ALL,
1390213912
Keyword::VIEWS,
@@ -13906,6 +13916,16 @@ impl<'a> Parser<'a> {
1390613916
Some(GrantObjects::AllViewsInSchema {
1390713917
schemas: self.parse_comma_separated(|p| p.parse_object_name(false))?,
1390813918
})
13919+
} else if self.parse_keywords(&[
13920+
Keyword::ALL,
13921+
Keyword::MATERIALIZED,
13922+
Keyword::VIEWS,
13923+
Keyword::IN,
13924+
Keyword::SCHEMA,
13925+
]) {
13926+
Some(GrantObjects::AllMaterializedViewsInSchema {
13927+
schemas: self.parse_comma_separated(|p| p.parse_object_name(false))?,
13928+
})
1390913929
} else if self.parse_keywords(&[
1391013930
Keyword::FUTURE,
1391113931
Keyword::SCHEMAS,
@@ -13924,6 +13944,16 @@ impl<'a> Parser<'a> {
1392413944
Some(GrantObjects::FutureTablesInSchema {
1392513945
schemas: self.parse_comma_separated(|p| p.parse_object_name(false))?,
1392613946
})
13947+
} else if self.parse_keywords(&[
13948+
Keyword::FUTURE,
13949+
Keyword::EXTERNAL,
13950+
Keyword::TABLES,
13951+
Keyword::IN,
13952+
Keyword::SCHEMA,
13953+
]) {
13954+
Some(GrantObjects::FutureExternalTablesInSchema {
13955+
schemas: self.parse_comma_separated(|p| p.parse_object_name(false))?,
13956+
})
1392713957
} else if self.parse_keywords(&[
1392813958
Keyword::FUTURE,
1392913959
Keyword::VIEWS,
@@ -13933,6 +13963,16 @@ impl<'a> Parser<'a> {
1393313963
Some(GrantObjects::FutureViewsInSchema {
1393413964
schemas: self.parse_comma_separated(|p| p.parse_object_name(false))?,
1393513965
})
13966+
} else if self.parse_keywords(&[
13967+
Keyword::FUTURE,
13968+
Keyword::MATERIALIZED,
13969+
Keyword::VIEWS,
13970+
Keyword::IN,
13971+
Keyword::SCHEMA,
13972+
]) {
13973+
Some(GrantObjects::FutureMaterializedViewsInSchema {
13974+
schemas: self.parse_comma_separated(|p| p.parse_object_name(false))?,
13975+
})
1393613976
} else if self.parse_keywords(&[
1393713977
Keyword::ALL,
1393813978
Keyword::SEQUENCES,
@@ -13942,6 +13982,15 @@ impl<'a> Parser<'a> {
1394213982
Some(GrantObjects::AllSequencesInSchema {
1394313983
schemas: self.parse_comma_separated(|p| p.parse_object_name(false))?,
1394413984
})
13985+
} else if self.parse_keywords(&[
13986+
Keyword::FUTURE,
13987+
Keyword::SEQUENCES,
13988+
Keyword::IN,
13989+
Keyword::SCHEMA,
13990+
]) {
13991+
Some(GrantObjects::FutureSequencesInSchema {
13992+
schemas: self.parse_comma_separated(|p| p.parse_object_name(false))?,
13993+
})
1394513994
} else if self.parse_keywords(&[Keyword::RESOURCE, Keyword::MONITOR]) {
1394613995
Some(GrantObjects::ResourceMonitors(self.parse_comma_separated(
1394713996
|p| p.parse_object_name_with_wildcards(false, true),

tests/sqlparser_common.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9415,6 +9415,8 @@ fn parse_grant() {
94159415
verified_stmt("GRANT SELECT ON ALL TABLES IN SCHEMA db1.sc1 TO APPLICATION ROLE role1");
94169416
verified_stmt("GRANT SELECT ON ALL TABLES IN SCHEMA db1.sc1 TO SHARE share1");
94179417
verified_stmt("GRANT SELECT ON ALL VIEWS IN SCHEMA db1.sc1 TO ROLE role1");
9418+
verified_stmt("GRANT SELECT ON ALL MATERIALIZED VIEWS IN SCHEMA db1.sc1 TO ROLE role1");
9419+
verified_stmt("GRANT SELECT ON ALL EXTERNAL TABLES IN SCHEMA db1.sc1 TO ROLE role1");
94189420
verified_stmt("GRANT USAGE ON SCHEMA sc1 TO a:b");
94199421
verified_stmt("GRANT USAGE ON SCHEMA sc1 TO GROUP group1");
94209422
verified_stmt("GRANT OWNERSHIP ON ALL TABLES IN SCHEMA DEV_STAS_ROGOZHIN TO ROLE ANALYST");
@@ -9428,7 +9430,10 @@ fn parse_grant() {
94289430
.verified_stmt("GRANT SELECT ON [my_table] TO [public]");
94299431
verified_stmt("GRANT SELECT ON FUTURE SCHEMAS IN DATABASE db1 TO ROLE role1");
94309432
verified_stmt("GRANT SELECT ON FUTURE TABLES IN SCHEMA db1.sc1 TO ROLE role1");
9433+
verified_stmt("GRANT SELECT ON FUTURE EXTERNAL TABLES IN SCHEMA db1.sc1 TO ROLE role1");
94319434
verified_stmt("GRANT SELECT ON FUTURE VIEWS IN SCHEMA db1.sc1 TO ROLE role1");
9435+
verified_stmt("GRANT SELECT ON FUTURE MATERIALIZED VIEWS IN SCHEMA db1.sc1 TO ROLE role1");
9436+
verified_stmt("GRANT SELECT ON FUTURE SEQUENCES IN SCHEMA db1.sc1 TO ROLE role1");
94329437
}
94339438

94349439
#[test]

0 commit comments

Comments
 (0)