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:15:55 +0000 (19:15 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 15 Aug 2007 19:15:55 +0000 (19:15 +0000)
commit37b57f118663d33583454ea7b01fc6db42deb219
tree12f1b94be2e11cfb4f479a3f22d634cb5c7984d9
parent75cfea7f00189390e6324c0e31420e42ca0a0685
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