diff options
Diffstat (limited to 'src/backend/commands/trigger.c')
-rw-r--r-- | src/backend/commands/trigger.c | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index efac061948f..5aed30f7edc 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.136 2002/10/21 19:55:49 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.136.2.1 2003/03/27 14:33:20 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -40,9 +40,10 @@ static void InsertTrigger(TriggerDesc *trigdesc, Trigger *trigger, int indx); static HeapTuple GetTupleForTrigger(EState *estate, - ResultRelInfo *relinfo, - ItemPointer tid, - TupleTableSlot **newSlot); + ResultRelInfo *relinfo, + ItemPointer tid, + CommandId cid, + TupleTableSlot **newSlot); static HeapTuple ExecCallTriggerFunc(TriggerData *trigdata, FmgrInfo *finfo, MemoryContext per_tuple_context); @@ -1189,7 +1190,8 @@ ExecARInsertTriggers(EState *estate, ResultRelInfo *relinfo, bool ExecBRDeleteTriggers(EState *estate, ResultRelInfo *relinfo, - ItemPointer tupleid) + ItemPointer tupleid, + CommandId cid) { TriggerDesc *trigdesc = relinfo->ri_TrigDesc; int ntrigs = trigdesc->n_before_row[TRIGGER_EVENT_DELETE]; @@ -1200,7 +1202,7 @@ ExecBRDeleteTriggers(EState *estate, ResultRelInfo *relinfo, TupleTableSlot *newSlot; int i; - trigtuple = GetTupleForTrigger(estate, relinfo, tupleid, &newSlot); + trigtuple = GetTupleForTrigger(estate, relinfo, tupleid, cid, &newSlot); if (trigtuple == NULL) return false; @@ -1247,7 +1249,9 @@ ExecARDeleteTriggers(EState *estate, ResultRelInfo *relinfo, if (trigdesc->n_after_row[TRIGGER_EVENT_DELETE] > 0) { HeapTuple trigtuple = GetTupleForTrigger(estate, relinfo, - tupleid, NULL); + tupleid, + (CommandId) 0, + NULL); DeferredTriggerSaveEvent(relinfo, TRIGGER_EVENT_DELETE, trigtuple, NULL); @@ -1257,7 +1261,8 @@ ExecARDeleteTriggers(EState *estate, ResultRelInfo *relinfo, HeapTuple ExecBRUpdateTriggers(EState *estate, ResultRelInfo *relinfo, - ItemPointer tupleid, HeapTuple newtuple) + ItemPointer tupleid, HeapTuple newtuple, + CommandId cid) { TriggerDesc *trigdesc = relinfo->ri_TrigDesc; int ntrigs = trigdesc->n_before_row[TRIGGER_EVENT_UPDATE]; @@ -1269,7 +1274,7 @@ ExecBRUpdateTriggers(EState *estate, ResultRelInfo *relinfo, TupleTableSlot *newSlot; int i; - trigtuple = GetTupleForTrigger(estate, relinfo, tupleid, &newSlot); + trigtuple = GetTupleForTrigger(estate, relinfo, tupleid, cid, &newSlot); if (trigtuple == NULL) return NULL; @@ -1322,7 +1327,9 @@ ExecARUpdateTriggers(EState *estate, ResultRelInfo *relinfo, if (trigdesc->n_after_row[TRIGGER_EVENT_UPDATE] > 0) { HeapTuple trigtuple = GetTupleForTrigger(estate, relinfo, - tupleid, NULL); + tupleid, + (CommandId) 0, + NULL); DeferredTriggerSaveEvent(relinfo, TRIGGER_EVENT_UPDATE, trigtuple, newtuple); @@ -1333,7 +1340,8 @@ ExecARUpdateTriggers(EState *estate, ResultRelInfo *relinfo, static HeapTuple GetTupleForTrigger(EState *estate, ResultRelInfo *relinfo, - ItemPointer tid, TupleTableSlot **newSlot) + ItemPointer tid, CommandId cid, + TupleTableSlot **newSlot) { Relation relation = relinfo->ri_RelationDesc; HeapTupleData tuple; @@ -1350,8 +1358,7 @@ GetTupleForTrigger(EState *estate, ResultRelInfo *relinfo, *newSlot = NULL; tuple.t_self = *tid; ltrmark:; - test = heap_mark4update(relation, &tuple, &buffer, - GetCurrentCommandId()); + test = heap_mark4update(relation, &tuple, &buffer, cid); switch (test) { case HeapTupleSelfUpdated: |