Re: PL/pgSQL — "commit" illegal in the executable section of a block statement that has an exception section

2019-09-30 Thread Christophe Pettus



> On Sep 30, 2019, at 15:37, Bryn Llewellyn  wrote:
> I wrote up the problem here:
> 
> https://github.com/yugabyte/yugabyte-db/issues/2464

This is documented; it's the very last line of the page you reference in the 
Github issue:

A transaction cannot be ended inside a block with exception handlers.

Your discussion doesn't answer the specific issue: BEGIN/EXCEPTION/END in 
pl/pgSQL is implemented by savepoints.  What semantics should COMMIT / ROLLBACK 
have inside of that?  Doing a COMMIT / ROLLBACK (at the database level) at that 
point would lose the savepoints, which would break the BEGIN/EXCEPTION/END 
semantics.

It's not clear to me what the alternative semantics would be.  Can you propose 
specific database behavior for a COMMIT or ROLLBACK inside a 
BEGIN/EXCEPTION/END block which retain the savepoint behavior of 
BEGIN/EXCEPTION/END?
--
-- Christophe Pettus
   x...@thebuild.com





PL/pgSQL — "commit" illegal in the executable section of a block statement that has an exception section

2019-09-30 Thread Bryn Llewellyn
I work for YugaByte, Inc (www.yugabyte.com ). 
YugabyteDB re-uses the source code that implements the “upper half” of 
PostgreSQL Version 11.2. See here:

https://blog.yugabyte.com/distributed-postgresql-on-a-google-spanner-architecture-query-layer/

This means that the problem that the PostgreSQL issue I describe tracks affects 
users of YugabyteDB too.

I wrote up the problem here:

https://github.com/yugabyte/yugabyte-db/issues/2464 


Please read my account and comment.

Peter Eisentraut, I hope that you’ll read this. I’m told that you're the 
authority for txn control in PL/pgSQL.