Re: BUG #16867: savepoints vs. commit and chain

Fujii Masao <masao.fujii@oss.nttdata.com>

From: Fujii Masao <masao.fujii@oss.nttdata.com>
To: Arthur Nascimento <tureba@gmail.com>, pgsql-bugs@lists.postgresql.org
Date: 2021-02-16T04:49:33Z
Lists: pgsql-bugs

Attachments


On 2021/02/16 6:47, Arthur Nascimento wrote:
> On Mon, 15 Feb 2021 at 17:54, PG Bug reporting form
> <noreply@postgresql.org> wrote:
>> On a trivial transaction, I might do:
>>
>> =# begin;
>> *=# commit and chain;
>> *=# -- In this point I'm inside a second transaction
> 
> I forgot to mention that this case also works as expected:
> 
> =# begin;
> *=# savepoint foo;
> *=# release foo;
> *=# commit and chain;
> *=# -- In this point I'm also inside a second transaction
> 
> So it's only the unmatched savepoint/release transactions that are an issue.
> 
> I also attached the change I did to psql locally.

LGTM.

> But since it didn't
> solve the issue, it's mostly for curiosity's sake.

In the server side, ISTM that CommitTransactionCommand() needs to handle
the COMMIT AND CHAIN in TBLOCK_SUBCOMMIT case, but it forgot to do that.
Patch attached. I'm not sure if this is a bug or an intentional behavior.
Probably we need to look at the past discussion about AND CHAIN feature.

Regards,

-- 
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION

Commits

  1. Fix psql's ON_ERROR_ROLLBACK so that it handles COMMIT AND CHAIN.

  2. Fix bug in COMMIT AND CHAIN command.