]> granicus.if.org Git - postgresql/commit
Fix trigger WHEN conditions when both BEFORE and AFTER triggers exist.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 21 Aug 2011 22:16:08 +0000 (18:16 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 21 Aug 2011 22:16:08 +0000 (18:16 -0400)
commit52120ee8346aa42d26e4c2244574df4d90f4bda6
tree6927a43174138a5abe84beb3f97e7de662836895
parent706493a1f7cbd9c7d3a792fd5066b55c145b9b01
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