From a0a0bc02b72e6ad4f50470050da7f0c1147e697a Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Wed, 24 Aug 2005 17:38:35 +0000 Subject: [PATCH] Fix ExecBRDeleteTriggers so that deletion is not suppressed when delete triggers exist but are all disabled. Problem noted by Gavin Sherry in original discussion of enable/disable trigger patch, but was never addressed. --- src/backend/commands/trigger.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index b1d2f4ce0d..b3caaa4ce3 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 - * $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.193 2005/08/23 22:40:08 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.194 2005/08/24 17:38:35 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1492,9 +1492,10 @@ ExecBRDeleteTriggers(EState *estate, ResultRelInfo *relinfo, TriggerDesc *trigdesc = relinfo->ri_TrigDesc; int ntrigs = trigdesc->n_before_row[TRIGGER_EVENT_DELETE]; int *tgindx = trigdesc->tg_before_row[TRIGGER_EVENT_DELETE]; + bool result = true; TriggerData LocTriggerData; HeapTuple trigtuple; - HeapTuple newtuple = NULL; + HeapTuple newtuple; TupleTableSlot *newSlot; int i; @@ -1524,13 +1525,16 @@ ExecBRDeleteTriggers(EState *estate, ResultRelInfo *relinfo, relinfo->ri_TrigInstrument, GetPerTupleMemoryContext(estate)); if (newtuple == NULL) + { + result = false; /* tell caller to suppress delete */ break; + } if (newtuple != trigtuple) heap_freetuple(newtuple); } heap_freetuple(trigtuple); - return (newtuple == NULL) ? false : true; + return result; } void -- GitLab