diff --git a/crates/pgt_statement_splitter/src/lib.rs b/crates/pgt_statement_splitter/src/lib.rs index 3fa67213..e5e995b7 100644 --- a/crates/pgt_statement_splitter/src/lib.rs +++ b/crates/pgt_statement_splitter/src/lib.rs @@ -105,6 +105,14 @@ mod tests { .expect_statements(vec!["select 1 from contact", "select 1"]); } + #[test] + fn grant() { + Tester::from("GRANT SELECT ON TABLE \"public\".\"my_table\" TO \"my_role\";") + .expect_statements(vec![ + "GRANT SELECT ON TABLE \"public\".\"my_table\" TO \"my_role\";", + ]); + } + #[test] fn double_newlines() { Tester::from("select 1 from contact\n\nselect 1\n\nselect 3").expect_statements(vec![ diff --git a/crates/pgt_statement_splitter/src/parser/common.rs b/crates/pgt_statement_splitter/src/parser/common.rs index a353791b..ab3f8173 100644 --- a/crates/pgt_statement_splitter/src/parser/common.rs +++ b/crates/pgt_statement_splitter/src/parser/common.rs @@ -205,6 +205,8 @@ pub(crate) fn unknown(p: &mut Parser, exclude: &[SyntaxKind]) { SyntaxKind::All, // for UNION ... EXCEPT SyntaxKind::Except, + // for grant + SyntaxKind::Grant, ] .iter() .all(|x| Some(x) != prev.as_ref()) @@ -230,6 +232,8 @@ pub(crate) fn unknown(p: &mut Parser, exclude: &[SyntaxKind]) { SyntaxKind::Also, // for create rule SyntaxKind::Instead, + // for grant + SyntaxKind::Grant, ] .iter() .all(|x| Some(x) != prev.as_ref())