Repair problems occurring when multiple RI updates have to be done to the same
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 15 Aug 2007 19:16:12 +0000 (19:16 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 15 Aug 2007 19:16:12 +0000 (19:16 +0000)
commit22f40f8ed7df3a1b23179f64bb89ea9c778acba6
tree85123981cec50a9bb810978af3024c9b8386df0d
parent9c40c734e4eaf8203fdaadf4a6950adde11eaafa
Repair problems occurring when multiple RI updates have to be done to the same
row within one query: we were firing check triggers before all the updates
were done, leading to bogus failures.  Fix by making the triggers queued by
an RI update go at the end of the outer query's trigger event list, thereby
effectively making the processing "breadth-first".  This was indeed how it
worked pre-8.0, so the bug does not occur in the 7.x branches.
Per report from Pavel Stehule.
src/backend/commands/trigger.c
src/backend/executor/spi.c
src/backend/utils/adt/ri_triggers.c
src/include/executor/spi.h
src/test/regress/expected/foreign_key.out
src/test/regress/sql/foreign_key.sql