Re: allow trigger to get updated columns - Mailing list pgsql-hackers

From Daniel Gustafsson
Subject Re: allow trigger to get updated columns
Date
Msg-id CEA65957-59AA-4BEA-AD33-5334EAC3E34C@yesql.se
Whole thread Raw
In response to allow trigger to get updated columns  (Peter Eisentraut <peter.eisentraut@2ndquadrant.com>)
Responses Re: allow trigger to get updated columns  (Peter Eisentraut <peter.eisentraut@2ndquadrant.com>)
List pgsql-hackers
> On 24 Feb 2020, at 10:58, Peter Eisentraut <peter.eisentraut@2ndquadrant.com> wrote:
>
> This is a change to make the bitmap of updated columns available to a trigger in TriggerData.  This is the same idea
aswas recently done to generated columns [0]: Generic triggers such as tsvector_update_trigger can use this information
toskip work if the columns they are interested in haven't changed.  With the generated columns change, perhaps this
isn'tso interesting anymore, but I suspect a lot of existing installations still use tsvector_update_trigger.  In any
case,since I had already written the code, I figured I post it here.  Perhaps there are other use cases. 

I wouldn't at all be surprised if there are usecases for this in the wild, and
given the very minor impact I absolutely think it's worth doing.  The patches
both apply, compile and pass tests without warnings.

The 0001 refactoring patch seems a clear win to me.

In the 0002 patch:

+        For <literal>UPDATE</literal> triggers, a bitmap set indicating the
+        columns that were updated by the triggering command.  Generic trigger

Is it worth pointing out that tg_updatedcols will be NULL rather than an empty
Bitmapset for non-UPDATE triggers?  bitmapset.c treats NULL as an empty bitmap
but since a Bitmapset can be allocated but empty, maybe it's worth being
explicit to help developers?

There isn't really a test suite that excercises this IIUC, how about adding
something like the attached diff to contrib/lo?  It seemed like a lower impact
change than widening test_tsvector.

+1 on the patchset, marking this entry as Ready For Committer.

cheers ./daniel


Attachment

pgsql-hackers by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: Restore replication settings when modifying a field type
Next
From: Euler Taveira
Date:
Subject: Re: logical replication empty transactions