]> granicus.if.org Git - postgresql/commit
Follow-on cleanup for the transition table patch.
authorKevin Grittner <kgrittn@postgresql.org>
Tue, 4 Apr 2017 23:36:39 +0000 (18:36 -0500)
committerKevin Grittner <kgrittn@postgresql.org>
Tue, 4 Apr 2017 23:36:39 +0000 (18:36 -0500)
commit5ebeb579b9b281dba5f8415b2fbda86fdae7b366
tree66aac432d4acc7300f2b395e4c8282f75d53ef0a
parent9a3215026bd6955e88bd8c20542cfe6acffdb1c8
Follow-on cleanup for the transition table patch.

Commit 59702716 added transition table support to PL/pgsql so that
SQL queries in trigger functions could access those transient
tables.  In order to provide the same level of support for PL/perl,
PL/python and PL/tcl, refactor the relevant code into a new
function SPI_register_trigger_data.  Call the new function in the
trigger handler of all four PLs, and document it as a public SPI
function so that authors of out-of-tree PLs can do the same.

Also get rid of a second QueryEnvironment object that was
maintained by PL/pgsql.  That was previously used to deal with
cursors, but the same approach wasn't appropriate for PLs that are
less tangled up with core code.  Instead, have SPI_cursor_open
install the connection's current QueryEnvironment, as already
happens for SPI_execute_plan.

While in the docs, remove the note that transition tables were only
supported in C and PL/pgSQL triggers, and correct some ommissions.

Thomas Munro with some work by Kevin Grittner (mostly docs)
16 files changed:
doc/src/sgml/ref/create_trigger.sgml
doc/src/sgml/spi.sgml
doc/src/sgml/trigger.sgml
src/backend/executor/spi.c
src/include/executor/spi.h
src/pl/plperl/expected/plperl_trigger.out
src/pl/plperl/plperl.c
src/pl/plperl/sql/plperl_trigger.sql
src/pl/plpgsql/src/pl_exec.c
src/pl/plpgsql/src/plpgsql.h
src/pl/plpython/expected/plpython_trigger.out
src/pl/plpython/plpy_exec.c
src/pl/plpython/sql/plpython_trigger.sql
src/pl/tcl/expected/pltcl_queries.out
src/pl/tcl/pltcl.c
src/pl/tcl/sql/pltcl_queries.sql