On Fri, Dec 1, 2017 at 2:48 PM, Peter Eisentraut <peter.eisentr...@2ndquadrant.com> wrote: > Here is a new patch, now on top of master. The main changes are that a > lot of documentation has been added.
This feature doesn't have many tests. I think it should have a lot more of them. It's tinkering with the transaction control machinery of the system in a fairly fundamental way, and that could break things. I suggest, in particular, testing how it interactions with resources such as cursors and prepared statements. For example, what happens if you commit or roll back inside a cursor-for loop (given that the cursor is not holdable)? There are several kinds of cursor loops in PostgreSQL, plus there are cursors, prepared statements, and portals that can be created using SQL commands or protocol messages. I suspect that there are quite a few tricky interactions there. Other things to think about: - COMMIT or ROLLBACK inside a PLpgsql block with an attached EXCEPTION block, or when an SQL SAVEPOINT has been established previously. - COMMIT or ROLLBACK inside a procedure with a SET clause attached, and/or while SET LOCAL is in effect either at the inner or outer level. - COMMIT or ROLLBACK with open large objects. - COMMIT inside a procedure fails because of a serialization failure, deferred constraint, etc. In some cases, there are not only questions of correctness (it shouldn't crash/give wrong answers) but also definitional questions (what exactly should happen in that case, anyway?). -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company