Fix trigger WHEN conditions when both BEFORE and AFTER triggers exist.
authorTom Lane <[email protected]>
Sun, 21 Aug 2011 22:15:55 +0000 (18:15 -0400)
committerTom Lane <[email protected]>
Sun, 21 Aug 2011 22:15:55 +0000 (18:15 -0400)
commitb33f78df17c32364d51f6e5128f8d81d7d3013a2
treed5acbc5668d0f60aa8befbb1ae42f807c447df6c
parent6cc08e703bb078ee1e8d183caf4596d62bf12bf7
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/commands/trigger.c
src/backend/executor/execMain.c
src/backend/executor/execUtils.c
src/include/nodes/execnodes.h
src/test/regress/expected/triggers.out
src/test/regress/sql/triggers.sql