Re: Rename of triggers for partitioned tables

David Steele <david@pgmasters.net>

From: David Steele <david@pgmasters.net>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>, Arne Roland <A.Roland@index.de>
Cc: Pg Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2021-03-18T15:50:37Z
Lists: pgsql-hackers
On 1/15/21 5:26 PM, Alvaro Herrera wrote:
> On 2020-Nov-27, Arne Roland wrote:
> 
>> I got too annoyed at building queries for gexec all the time. So wrote
>> a patch to fix the issue that the rename of partitioned trigger
>> doesn't affect children.
> 
> As you say, triggers on children don't necessarily have to have the same
> name as on parent; this already happens when the trigger is renamed in
> the child table but not on parent.  In that situation the search on the
> child will fail, which will cause the whole thing to fail I think.
> 
> We now have the column pg_trigger.tgparentid, and I think it would be
> better (more reliable) to search for the trigger in the child by the
> tgparentid column instead, rather than by name.
> 
> Also, I think it would be good to have
>   ALTER TRIGGER .. ON ONLY parent RENAME TO ..
> to avoid recursing to children.  This seems mostly pointless, but since
> we've allowed changing the name of the trigger in children thus far,
> then we've implicitly made it supported to have triggers that are named
> differently.  (And it's not entirely academic, since the trigger name
> determines firing order.)
> 
> Alternatively to this last point, we could decide to disallow renaming
> of triggers on children (i.e. if trigger has tgparentid set, then
> renaming is disallowed).  I don't have a problem with that, but it would
> have to be an explicit decision to take.

Arne, thoughts on Álvaro's comments?

Marking this patch as Waiting for Author.

Regards,
-- 
-David
david@pgmasters.net



Commits

  1. Remove newly added useless assertion check

  2. Make ALTER TRIGGER RENAME consistent for partitioned tables

  3. Fix pg_dump for disabled triggers on partitioned tables

  4. Preserve firing-on state when cloning row triggers to partitions

  5. Fix ALTER TABLE .. ENABLE/DISABLE TRIGGER recursion

  6. Record parents of triggers

  7. Allow FOR EACH ROW triggers on partitioned tables