expand-trigger-tuple.patch

application/octet-stream

Filename: expand-trigger-tuple.patch
Type: application/octet-stream
Part: 0
Message: Re: BUG #16644: null value for defaults in OLD variable for trigger

Patch

Format: unified
File+
src/backend/commands/trigger.c 3 0
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index 28b98d1..2b26e7f 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -2644,6 +2644,7 @@ ExecBRUpdateTriggers(EState *estate, EPQState *epqstate,
 	if (fdw_trigtuple == NULL)
 	{
 		TupleTableSlot *epqslot_candidate = NULL;
+		TupleDesc		tupDesc = RelationGetDescr(relinfo->ri_RelationDesc);
 
 		/* get a copy of the on-disk tuple we are planning to update */
 		if (!GetTupleForTrigger(estate, epqstate, relinfo, tupleid,
@@ -2673,6 +2674,8 @@ ExecBRUpdateTriggers(EState *estate, EPQState *epqstate,
 		}
 
 		trigtuple = ExecFetchSlotHeapTuple(oldslot, true, &should_free_trig);
+		if (HeapTupleHeaderGetNatts(trigtuple->t_data) < tupDesc->natts)
+			trigtuple = heap_expand_tuple(trigtuple, tupDesc);
 	}
 	else
 	{