From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
---|---|
To: | Justin Pryzby <pryzby(at)telsasoft(dot)com> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-hackers(at)postgresql(dot)org, Amit Langote <amitlangote09(at)gmail(dot)com> |
Subject: | Re: CREATE TABLE .. PARTITION OF fails to preserve tgenabled for inherited row triggers |
Date: | 2020-10-21 17:02:37 |
Message-ID: | 20201021170237.GA17401@alvherre.pgsql |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 2020-Oct-21, Justin Pryzby wrote:
> I came up with this, which probably needs more than a little finesse.
Hmm, there are two important changes needed on this: 1) it must not emit
CREATE lines for the child triggers; only the ALTER TABLE ONLY
<partition> lines to set disable state on the partition are needed. 2)
tgparentid does not exist prior to pg13, so you need some additional
trick to cover that case.
Also, I think the multipartition case is broken: if grandparent has
trigger enabled, parent has trigger disabled and child trigger set to
always, is that dumped correctly? I think the right way to do this is
change only the partitions that differ from the topmost partitioned
table -- not their immediate parents; and use ONLY to ensure they don't
affect downstream children.
Change 1 also means that the test with the "this shouldn't ever get
emitted" comment remains unchanged.
I'm not sure how to tackle change 2. You need to search pg_depend for
entries with classid=pg_trigger and refclass=pg_trigger ... (commit
1fa846f1c9af might give some clue)
From | Date | Subject | |
---|---|---|---|
Next Message | Andrey Borodin | 2020-10-21 17:13:34 | Re: Yet another fast GiST build |
Previous Message | Fujii Masao | 2020-10-21 16:31:11 | Re: [PATCH] Add features to pg_stat_statements |