aboutsummaryrefslogtreecommitdiff
path: root/src/test/regress/sql/triggers.sql
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/regress/sql/triggers.sql')
-rw-r--r--src/test/regress/sql/triggers.sql45
1 files changed, 39 insertions, 6 deletions
diff --git a/src/test/regress/sql/triggers.sql b/src/test/regress/sql/triggers.sql
index 626608a1a6c..dd5f0948b15 100644
--- a/src/test/regress/sql/triggers.sql
+++ b/src/test/regress/sql/triggers.sql
@@ -2535,7 +2535,7 @@ insert into convslot_test_child(col1) values ('1');
insert into convslot_test_parent(col1) values ('3');
insert into convslot_test_child(col1) values ('3');
-create or replace function trigger_function1()
+create function convslot_trig1()
returns trigger
language plpgsql
AS $$
@@ -2546,7 +2546,7 @@ raise notice 'trigger = %, old_table = %',
return null;
end; $$;
-create or replace function trigger_function2()
+create function convslot_trig2()
returns trigger
language plpgsql
AS $$
@@ -2559,11 +2559,11 @@ end; $$;
create trigger but_trigger after update on convslot_test_child
referencing new table as new_table
-for each statement execute function trigger_function2();
+for each statement execute function convslot_trig2();
update convslot_test_parent set col1 = col1 || '1';
-create or replace function trigger_function3()
+create function convslot_trig3()
returns trigger
language plpgsql
AS $$
@@ -2577,12 +2577,45 @@ end; $$;
create trigger but_trigger2 after update on convslot_test_child
referencing old table as old_table new table as new_table
-for each statement execute function trigger_function3();
+for each statement execute function convslot_trig3();
update convslot_test_parent set col1 = col1 || '1';
create trigger bdt_trigger after delete on convslot_test_child
referencing old table as old_table
-for each statement execute function trigger_function1();
+for each statement execute function convslot_trig1();
delete from convslot_test_parent;
drop table convslot_test_child, convslot_test_parent;
+drop function convslot_trig1();
+drop function convslot_trig2();
+drop function convslot_trig3();
+
+-- Bug #17607: variant of above in which trigger function raises an error;
+-- we don't see any ill effects unless trigger tuple requires mapping
+
+create table convslot_test_parent (id int primary key, val int)
+partition by range (id);
+
+create table convslot_test_part (val int, id int not null);
+
+alter table convslot_test_parent
+ attach partition convslot_test_part for values from (1) to (1000);
+
+create function convslot_trig4() returns trigger as
+$$begin raise exception 'BOOM!'; end$$ language plpgsql;
+
+create trigger convslot_test_parent_update
+ after update on convslot_test_parent
+ referencing old table as old_rows new table as new_rows
+ for each statement execute procedure convslot_trig4();
+
+insert into convslot_test_parent (id, val) values (1, 2);
+
+begin;
+savepoint svp;
+update convslot_test_parent set val = 3; -- error expected
+rollback to savepoint svp;
+rollback;
+
+drop table convslot_test_parent;
+drop function convslot_trig4();