diff --git a/crates/pgt_statement_splitter/src/lib.rs b/crates/pgt_statement_splitter/src/lib.rs index e44f20f1..e43a1095 100644 --- a/crates/pgt_statement_splitter/src/lib.rs +++ b/crates/pgt_statement_splitter/src/lib.rs @@ -180,6 +180,22 @@ mod tests { Tester::from("/* this is a test */\nselect 1").expect_statements(vec!["select 1"]); } + #[test] + fn trigger_instead_of() { + Tester::from( + "CREATE OR REPLACE TRIGGER my_trigger + INSTEAD OF INSERT ON my_table + FOR EACH ROW + EXECUTE FUNCTION my_table_trigger_fn();", + ) + .expect_statements(vec![ + "CREATE OR REPLACE TRIGGER my_trigger + INSTEAD OF INSERT ON my_table + FOR EACH ROW + EXECUTE FUNCTION my_table_trigger_fn();", + ]); + } + #[test] fn with_check() { Tester::from("create policy employee_insert on journey_execution for insert to authenticated with check ((select private.organisation_id()) = organisation_id);") diff --git a/crates/pgt_statement_splitter/src/parser/common.rs b/crates/pgt_statement_splitter/src/parser/common.rs index d5398016..a5d68df1 100644 --- a/crates/pgt_statement_splitter/src/parser/common.rs +++ b/crates/pgt_statement_splitter/src/parser/common.rs @@ -236,6 +236,8 @@ pub(crate) fn unknown(p: &mut Parser, exclude: &[SyntaxKind]) { SyntaxKind::For, // e.g. on insert or delete SyntaxKind::Or, + // e.g. INSTEAD OF INSERT + SyntaxKind::Of, // for create rule SyntaxKind::On, // for create rule