Repair problems occurring when multiple RI updates have to be done to the same
authorTom Lane <[email protected]>
Wed, 15 Aug 2007 19:16:12 +0000 (19:16 +0000)
committerTom Lane <[email protected]>
Wed, 15 Aug 2007 19:16:12 +0000 (19:16 +0000)
commit5a3ec023120e504e6ba1f9b68069d8949e4222d4
treeba294c589e556811e16e105f7efbed20177a7754
parentc5e86719b0eacce9950bb3d70ec28b0d9bfef008
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