From 52120ee8346aa42d26e4c2244574df4d90f4bda6 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 21 Aug 2011 18:16:08 -0400 Subject: Fix trigger WHEN conditions when both BEFORE and AFTER triggers exist. Due to tuple-slot mismanagement, evaluation of WHEN conditions for AFTER ROW UPDATE triggers could crash if there had been a BEFORE ROW trigger fired for the same update. Fix by not trying to overload the use of estate->es_trig_tuple_slot. Per report from Yoran Heling. Back-patch to 9.0, when trigger WHEN conditions were introduced. --- src/backend/executor/execMain.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/backend/executor/execMain.c') diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index bbe67ed8bba..504f4de7013 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -790,6 +790,7 @@ InitPlan(QueryDesc *queryDesc, int eflags) estate->es_tupleTable = NIL; estate->es_trig_tuple_slot = NULL; estate->es_trig_oldtup_slot = NULL; + estate->es_trig_newtup_slot = NULL; /* mark EvalPlanQual not active */ estate->es_epqTuple = NULL; -- cgit v1.2.3