-
- Downloads
Fire non-deferred AFTER triggers immediately upon query completion,
rather than when returning to the idle loop. This makes no particular difference for interactively-issued queries, but it makes a big difference for queries issued within functions: trigger execution now occurs before the calling function is allowed to proceed. This responds to numerous complaints about nonintuitive behavior of foreign key checking, such as http://archives.postgresql.org/pgsql-bugs/2004-09/msg00020.php, and appears to be required by the SQL99 spec. Also take the opportunity to simplify the data structures used for the pending-trigger list, rename them for more clarity, and squeeze out a bit of space.
Showing
- doc/src/sgml/ref/set_constraints.sgml 15 additions, 16 deletionsdoc/src/sgml/ref/set_constraints.sgml
- doc/src/sgml/release.sgml 24 additions, 2 deletionsdoc/src/sgml/release.sgml
- src/backend/access/transam/xact.c 39 additions, 43 deletionssrc/backend/access/transam/xact.c
- src/backend/commands/copy.c 11 additions, 1 deletionsrc/backend/commands/copy.c
- src/backend/commands/explain.c 12 additions, 3 deletionssrc/backend/commands/explain.c
- src/backend/commands/portalcmds.c 3 additions, 1 deletionsrc/backend/commands/portalcmds.c
- src/backend/commands/trigger.c 671 additions, 524 deletionssrc/backend/commands/trigger.c
- src/backend/executor/functions.c 8 additions, 1 deletionsrc/backend/executor/functions.c
- src/backend/executor/spi.c 9 additions, 3 deletionssrc/backend/executor/spi.c
- src/backend/tcop/postgres.c 1 addition, 4 deletionssrc/backend/tcop/postgres.c
- src/backend/tcop/pquery.c 19 additions, 3 deletionssrc/backend/tcop/pquery.c
- src/backend/tcop/utility.c 2 additions, 2 deletionssrc/backend/tcop/utility.c
- src/backend/utils/adt/ri_triggers.c 2 additions, 2 deletionssrc/backend/utils/adt/ri_triggers.c
- src/include/commands/trigger.h 15 additions, 13 deletionssrc/include/commands/trigger.h
- src/test/regress/expected/foreign_key.out 1 addition, 0 deletionssrc/test/regress/expected/foreign_key.out
- src/test/regress/expected/plpgsql.out 71 additions, 0 deletionssrc/test/regress/expected/plpgsql.out
- src/test/regress/sql/plpgsql.sql 51 additions, 0 deletionssrc/test/regress/sql/plpgsql.sql
Loading
Please register or sign in to comment