Transaction chaining
authorPeter Eisentraut <peter@eisentraut.org>
Sun, 24 Mar 2019 09:33:14 +0000 (10:33 +0100)
committerPeter Eisentraut <peter@eisentraut.org>
Sun, 24 Mar 2019 10:33:02 +0000 (11:33 +0100)
commit280a408b48d5ee42969f981bceb9e9426c3a344c
tree07cb0ab7cfdbb369e76130ef2cff56f65d0285a2
parentb2db277057a375ccbcc98cc3bbce8ce5b4d788ea
Transaction chaining

Add command variants COMMIT AND CHAIN and ROLLBACK AND CHAIN, which
start new transactions with the same transaction characteristics as the
just finished one, per SQL standard.

Support for transaction chaining in PL/pgSQL is also added.  This
functionality is especially useful when running COMMIT in a loop in
PL/pgSQL.

Reviewed-by: Fabien COELHO <coelho@cri.ensmp.fr>
Discussion: https://www.postgresql.org/message-id/flat/28536681-324b-10dc-ade8-ab46f7645a5a@2ndquadrant.com
26 files changed:
doc/src/sgml/plpgsql.sgml
doc/src/sgml/ref/abort.sgml
doc/src/sgml/ref/commit.sgml
doc/src/sgml/ref/end.sgml
doc/src/sgml/ref/rollback.sgml
doc/src/sgml/spi.sgml
src/backend/access/transam/xact.c
src/backend/catalog/sql_features.txt
src/backend/executor/spi.c
src/backend/nodes/copyfuncs.c
src/backend/nodes/equalfuncs.c
src/backend/parser/gram.y
src/backend/tcop/utility.c
src/bin/psql/tab-complete.c
src/include/access/xact.h
src/include/executor/spi.h
src/include/nodes/parsenodes.h
src/pl/plpgsql/src/expected/plpgsql_transaction.out
src/pl/plpgsql/src/pl_exec.c
src/pl/plpgsql/src/pl_funcs.c
src/pl/plpgsql/src/pl_gram.y
src/pl/plpgsql/src/pl_unreserved_kwlist.h
src/pl/plpgsql/src/plpgsql.h
src/pl/plpgsql/src/sql/plpgsql_transaction.sql
src/test/regress/expected/transactions.out
src/test/regress/sql/transactions.sql