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 {