Re: BUG #17504: psql --single-transaction -vON_ERROR_STOP=1 still commits after client-side error

David G. Johnston <david.g.johnston@gmail.com>

From: "David G. Johnston" <david.g.johnston@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Kyotaro Horiguchi <horikyota.ntt@gmail.com>, Michael Paquier <michael@paquier.xyz>, Christoph Berg <christoph.berg@credativ.de>, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2022-06-06T20:05:46Z
Lists: pgsql-bugs
On Mon, Jun 6, 2022 at 7:30 AM Robert Haas <robertmhaas@gmail.com> wrote:

> On Mon, Jun 6, 2022 at 2:11 AM Kyotaro Horiguchi
> <horikyota.ntt@gmail.com> wrote:
> > > >> It causes psql to issue a BEGIN command before the first such option
> > > >> and a COMMIT command after the last one, thereby wrapping all the
> > > >> commands into a single transaction.
> > > >> If any of the commands fails, a ROLLBACK command is sent instead.
> > > >> This ensures that either all the commands complete successfully, or
> > > >> no changes are applied.
> > >
> > > Looks fine to me, so applied down to 10.
> >
> > (Yes!)
>
> I am slightly concerned that this behavior change could break
> somebody's stuff when they upgrade to the next minor release. It does
> not seem impossible that someone could be knowingly relying on the old
> behavior.
>
>
We've done worse when dealing with obvious bugs contrary to the
documentation and that prevent unsafe behavior.  People relying on the
defined behavior to safely fail when encountering unexpected failure
producing situations that hopefully never happen get the priority over
poorly written code that somehow relies on errors not respecting the single
transaction promise.

David J.

Commits

  1. Tweak behavior of psql --single-transaction depending on ON_ERROR_STOP

  2. Doc: remove a04ccf6df from release notes, now that it's reverted.

  3. Revert "Fix psql's single transaction mode on client-side errors with -c/-f switches".

  4. Fix psql's single transaction mode on client-side errors with -c/-f switches