chained transactions
Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
From: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
To: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2018-03-01T03:35:52Z
Lists: pgsql-hackers
Attachments
- v1-0001-Update-function-comments.patch (text/plain) patch v1-0001
- v1-0002-Rename-TransactionChain-functions.patch (text/plain) patch v1-0002
- v1-0003-Simplify-parse-representation-of-savepoint-comman.patch (text/plain) patch v1-0003
- v1-0004-Improve-savepoint-error-messages.patch (text/plain) patch v1-0004
- v1-0005-Change-transaction-state-debug-strings-to-match-e.patch (text/plain) patch v1-0005
- v1-0006-Turn-transaction_isolation-into-GUC-enum.patch (text/plain) patch v1-0006
- v1-0007-Transaction-chaining.patch (text/plain) patch v1-0007
- v1-0008-Transaction-chaining-support-in-PL-pgSQL.patch (text/plain) patch v1-0008
This feature is meant to help manage transaction isolation in procedures. I proposed elsewhere a patch that allows running SET TRANSACTION in PL/pgSQL. But if you have complex procedures that commit many times in different branches perhaps, you'd have to do this in every new transaction, which would create code that is difficult to manage. The SQL standard offers the "chained transactions" feature to address this. The new command variants COMMIT AND CHAIN and ROLLBACK AND CHAIN immediately start a new transaction with the characteristics (isolation level, read/write, deferrable) of the previous one. So code that has particular requirements regard transaction isolation and such can use this to simplify code management. In the patch series, 0001 through 0006 is some preparatory code cleanup that is useful independently. 0007 is the implementation of the feature for the main SQL environment, 0008 is for PL/pgSQL. Support in other PLs could be added easily. The patch series also requires the "SET TRANSACTION in PL/pgSQL" patch for use in the test suite. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Transaction chaining
- 280a408b48d5 12.0 landed
-
Turn transaction_isolation into GUC enum
- f8c10f616fa5 12.0 landed