aboutsummaryrefslogtreecommitdiff
path: root/contrib/lo/lo.c
diff options
context:
space:
mode:
authorPeter Eisentraut <peter@eisentraut.org>2020-03-09 09:22:22 +0100
committerPeter Eisentraut <peter@eisentraut.org>2020-03-09 09:34:55 +0100
commit71d60e2aa05157efec28393b15c0b0b9fc1b210c (patch)
tree535e192f42bee56fb4978b003cbd22e099ea2f46 /contrib/lo/lo.c
parent8f152b6c50c764d4c300e73a535da88cd1b18fa5 (diff)
downloadpostgresql-71d60e2aa05157efec28393b15c0b0b9fc1b210c.tar.gz
postgresql-71d60e2aa05157efec28393b15c0b0b9fc1b210c.zip
Add tg_updatedcols to TriggerData
This allows a trigger function to determine for an UPDATE trigger which columns were actually updated. This allows some optimizations in generic trigger functions such as lo_manage and tsvector_update_trigger. Reviewed-by: Daniel Gustafsson <daniel@yesql.se> Discussion: https://www.postgresql.org/message-id/flat/11c5f156-67a9-0fb5-8200-2a8018eb2e0c@2ndquadrant.com
Diffstat (limited to 'contrib/lo/lo.c')
-rw-r--r--contrib/lo/lo.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/contrib/lo/lo.c b/contrib/lo/lo.c
index 4585923ee2b..b9847081db6 100644
--- a/contrib/lo/lo.c
+++ b/contrib/lo/lo.c
@@ -74,7 +74,8 @@ lo_manage(PG_FUNCTION_ARGS)
* Here, if the value of the monitored attribute changes, then the large
* object associated with the original value is unlinked.
*/
- if (newtuple != NULL)
+ if (newtuple != NULL &&
+ bms_is_member(attnum - FirstLowInvalidHeapAttributeNumber, trigdata->tg_updatedcols))
{
char *orig = SPI_getvalue(trigtuple, tupdesc, attnum);
char *newv = SPI_getvalue(newtuple, tupdesc, attnum);