Re: enable/disable broken for statement triggers on partitioned tables
От | Dmitry Koval |
---|---|
Тема | Re: enable/disable broken for statement triggers on partitioned tables |
Дата | |
Msg-id | ea25d7d5-0454-8d09-9936-12ee9bddf942@postgrespro.ru обсуждение исходный текст |
Ответ на | Re: enable/disable broken for statement triggers on partitioned tables (Amit Langote <amitlangote09@gmail.com>) |
Ответы |
Re: enable/disable broken for statement triggers on partitioned tables
|
Список | pgsql-hackers |
Hi! I've looked through the code and everything looks good. But there is one thing I doubt. Patch changes result of test: ---- create function trig_nothing() returns trigger language plpgsql as $$ begin return null; end $$; create table parent (a int) partition by list (a); create table child1 partition of parent for values in (1); create trigger tg after insert on parent for each row execute procedure trig_nothing(); select tgrelid::regclass, tgname, tgenabled from pg_trigger where tgrelid in ('parent'::regclass, 'child1'::regclass) order by tgrelid::regclass::text; alter table only parent enable always trigger tg; -- no recursion select tgrelid::regclass, tgname, tgenabled from pg_trigger where tgrelid in ('parent'::regclass, 'child1'::regclass) order by tgrelid::regclass::text; alter table parent enable always trigger tg; -- recursion select tgrelid::regclass, tgname, tgenabled from pg_trigger where tgrelid in ('parent'::regclass, 'child1'::regclass) order by tgrelid::regclass::text; drop table parent, child1; drop function trig_nothing(); ---- Results of vanilla + patch: ---- CREATE FUNCTION CREATE TABLE CREATE TABLE CREATE TRIGGER tgrelid | tgname | tgenabled ---------+--------+----------- child1 | tg | O parent | tg | O (2 rows) ALTER TABLE tgrelid | tgname | tgenabled ---------+--------+----------- child1 | tg | O parent | tg | A (2 rows) ALTER TABLE tgrelid | tgname | tgenabled ---------+--------+----------- child1 | tg | O parent | tg | A (2 rows) DROP TABLE DROP FUNCTION ---- Results of vanilla: ---- CREATE FUNCTION CREATE TABLE CREATE TABLE CREATE TRIGGER tgrelid | tgname | tgenabled ---------+--------+----------- child1 | tg | O parent | tg | O (2 rows) ALTER TABLE tgrelid | tgname | tgenabled ---------+--------+----------- child1 | tg | O parent | tg | A (2 rows) ALTER TABLE tgrelid | tgname | tgenabled ---------+--------+----------- child1 | tg | A parent | tg | A (2 rows) DROP TABLE DROP FUNCTION ---- The patch doesn't start recursion in case 'tgenabled' flag of parent table is not changes. Probably vanilla result is more correct. -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com
В списке pgsql-hackers по дате отправления: