diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2007-08-15 19:15:47 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2007-08-15 19:15:47 +0000 |
commit | 9cb84097623e5efe32b7289ca3c403f70ee152d8 (patch) | |
tree | c56de88ec254e2f020e27a431c0aa3ade704a633 /src/include/executor/spi.h | |
parent | 5ff95e6b8e19cef5e7fd15368194da1d29ebb0be (diff) | |
download | postgresql-9cb84097623e5efe32b7289ca3c403f70ee152d8.tar.gz postgresql-9cb84097623e5efe32b7289ca3c403f70ee152d8.zip |
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.
Diffstat (limited to 'src/include/executor/spi.h')
-rw-r--r-- | src/include/executor/spi.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/include/executor/spi.h b/src/include/executor/spi.h index 20beefe4401..3ef50993c62 100644 --- a/src/include/executor/spi.h +++ b/src/include/executor/spi.h @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/executor/spi.h,v 1.62 2007/07/25 12:22:53 mha Exp $ + * $PostgreSQL: pgsql/src/include/executor/spi.h,v 1.63 2007/08/15 19:15:46 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -104,7 +104,7 @@ extern int SPI_execute_snapshot(SPIPlanPtr plan, Datum *Values, const char *Nulls, Snapshot snapshot, Snapshot crosscheck_snapshot, - bool read_only, long tcount); + bool read_only, bool fire_triggers, long tcount); extern SPIPlanPtr SPI_prepare(const char *src, int nargs, Oid *argtypes); extern SPIPlanPtr SPI_prepare_cursor(const char *src, int nargs, Oid *argtypes, int cursorOptions); |