From aa107837a6d2de81f258aefbcf10cff3dc7471be Mon Sep 17 00:00:00 2001 From: psteinroe Date: Wed, 16 Apr 2025 16:53:06 +0200 Subject: [PATCH] fix: split grant stmt properly --- crates/pgt_statement_splitter/src/lib.rs | 8 ++++++++ crates/pgt_statement_splitter/src/parser/common.rs | 4 ++++ 2 files changed, 12 insertions(+) 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())