pgsql-server: Fire non-deferred AFTER triggers immediately upon query - Mailing list pgsql-committers

From tgl@svr1.postgresql.org (Tom Lane)
Subject pgsql-server: Fire non-deferred AFTER triggers immediately upon query
Date
Msg-id 20040910184010.6DF84329CFB@svr1.postgresql.org
Whole thread Raw
Responses Re: pgsql-server: Fire non-deferred AFTER triggers immediately
List pgsql-committers
Log Message:
-----------
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.

Modified Files:
--------------
    pgsql-server/doc/src/sgml/ref:
        set_constraints.sgml (r1.11 -> r1.12)

(http://developer.postgresql.org/cvsweb.cgi/pgsql-server/doc/src/sgml/ref/set_constraints.sgml.diff?r1=1.11&r2=1.12)
    pgsql-server/doc/src/sgml:
        release.sgml (r1.294 -> r1.295)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql-server/doc/src/sgml/release.sgml.diff?r1=1.294&r2=1.295)
    pgsql-server/src/backend/access/transam:
        xact.c (r1.186 -> r1.187)

(http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/access/transam/xact.c.diff?r1=1.186&r2=1.187)
    pgsql-server/src/backend/commands:
        copy.c (r1.230 -> r1.231)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/commands/copy.c.diff?r1=1.230&r2=1.231)
        explain.c (r1.124 -> r1.125)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/commands/explain.c.diff?r1=1.124&r2=1.125)
        portalcmds.c (r1.33 -> r1.34)

(http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/commands/portalcmds.c.diff?r1=1.33&r2=1.34)
        trigger.c (r1.171 -> r1.172)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/commands/trigger.c.diff?r1=1.171&r2=1.172)
    pgsql-server/src/backend/executor:
        functions.c (r1.87 -> r1.88)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/executor/functions.c.diff?r1=1.87&r2=1.88)
        spi.c (r1.125 -> r1.126)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/executor/spi.c.diff?r1=1.125&r2=1.126)
    pgsql-server/src/backend/tcop:
        postgres.c (r1.430 -> r1.431)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/tcop/postgres.c.diff?r1=1.430&r2=1.431)
        pquery.c (r1.85 -> r1.86)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/tcop/pquery.c.diff?r1=1.85&r2=1.86)
        utility.c (r1.228 -> r1.229)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/tcop/utility.c.diff?r1=1.228&r2=1.229)
    pgsql-server/src/backend/utils/adt:
        ri_triggers.c (r1.71 -> r1.72)

(http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/utils/adt/ri_triggers.c.diff?r1=1.71&r2=1.72)
    pgsql-server/src/include/commands:
        trigger.h (r1.48 -> r1.49)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/include/commands/trigger.h.diff?r1=1.48&r2=1.49)
    pgsql-server/src/test/regress/expected:
        foreign_key.out (r1.36 -> r1.37)

(http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/test/regress/expected/foreign_key.out.diff?r1=1.36&r2=1.37)
        plpgsql.out (r1.19 -> r1.20)

(http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/test/regress/expected/plpgsql.out.diff?r1=1.19&r2=1.20)
    pgsql-server/src/test/regress/sql:
        plpgsql.sql (r1.14 -> r1.15)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/test/regress/sql/plpgsql.sql.diff?r1=1.14&r2=1.15)

pgsql-committers by date:

Previous
From: momjian@svr1.postgresql.org (Bruce Momjian)
Date:
Subject: pgsql-server: Add: > * Make row-wise comparisons work per SQL spec >
Next
From: tgl@svr1.postgresql.org (Tom Lane)
Date:
Subject: pgsql-server: Fix some problems with restoring databases owned by