Re: Error on failed COMMIT

Dave Cramer <davecramer@postgres.rocks>

From: Dave Cramer <davecramer@postgres.rocks>
To: Merlin Moncure <mmoncure@gmail.com>
Cc: Vladimir Sitnikov <sitnikov.vladimir@gmail.com>, Robert Haas <robertmhaas@gmail.com>, Shay Rojansky <roji@roji.org>, "Haumacher, Bernhard" <haui@haumacher.de>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2020-02-24T23:22:21Z
Lists: pgsql-hackers
On Mon, 24 Feb 2020 at 17:59, Merlin Moncure <mmoncure@gmail.com> wrote:

> On Mon, Feb 24, 2020 at 4:06 PM Vladimir Sitnikov
> <sitnikov.vladimir@gmail.com> wrote:
> >
> > Merlin>My biggest sense of alarm with the proposed change is that it
> could
> > Merlin>leave applications in a state where the transaction is hanging
> there
> >
> > How come?
> > The spec says commit ends the transaction.
> > Can you please clarify where the proposed change leaves a hanging
> transaction?
> >
> > Just in case, the proposed change is as follows:
> >
> > postgres=# begin;
> > BEGIN
> > postgres=# aslkdfasdf;
> > ERROR:  syntax error at or near "aslkdfasdf"
> > LINE 1: aslkdfasdf;
> >         ^
> > postgres=# commit;
> > ROLLBACK   <-- this should be replaced with "ERROR: can't commit the
> transaction because ..."
> > postgres=# commit;
> > WARNING:  there is no transaction in progress  <-- this should be as it
> is currently. Even if commit throws an error, the transaction should be
> terminated.
> > COMMIT
>
> Ok, you're right; I missed the point in that it's not nearly as bad as
> I thought you were suggesting (to treat commit as bad statement) but
> the transaction would still terminate.   Still, this is very sensitive
> stuff, do you think most common connection poolers would continue to
> work after making this change?
>

Don't see why not. All that happens is that an error message is emitted by
the server on commit instead of silently rolling back


Dave Cramer
https://www.postgres.rocks