Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit a0a0bc0

Browse files
committed
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.
1 parent 130b2dd commit a0a0bc0

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

src/backend/commands/trigger.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1994, Regents of the University of California
88
*
99
* IDENTIFICATION
10-
* $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.193 2005/08/23 22:40:08 tgl Exp $
10+
* $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.194 2005/08/24 17:38:35 tgl Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -1492,9 +1492,10 @@ ExecBRDeleteTriggers(EState *estate, ResultRelInfo *relinfo,
14921492
TriggerDesc *trigdesc = relinfo->ri_TrigDesc;
14931493
int ntrigs = trigdesc->n_before_row[TRIGGER_EVENT_DELETE];
14941494
int *tgindx = trigdesc->tg_before_row[TRIGGER_EVENT_DELETE];
1495+
bool result = true;
14951496
TriggerData LocTriggerData;
14961497
HeapTuple trigtuple;
1497-
HeapTuple newtuple = NULL;
1498+
HeapTuple newtuple;
14981499
TupleTableSlot *newSlot;
14991500
int i;
15001501

@@ -1524,13 +1525,16 @@ ExecBRDeleteTriggers(EState *estate, ResultRelInfo *relinfo,
15241525
relinfo->ri_TrigInstrument,
15251526
GetPerTupleMemoryContext(estate));
15261527
if (newtuple == NULL)
1528+
{
1529+
result = false; /* tell caller to suppress delete */
15271530
break;
1531+
}
15281532
if (newtuple != trigtuple)
15291533
heap_freetuple(newtuple);
15301534
}
15311535
heap_freetuple(trigtuple);
15321536

1533-
return (newtuple == NULL) ? false : true;
1537+
return result;
15341538
}
15351539

15361540
void

0 commit comments

Comments
 (0)