Re: BUG #17504: psql --single-transaction -vON_ERROR_STOP=1 still commits after client-side error
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Robert Haas <robertmhaas@gmail.com>, Kyotaro Horiguchi <horikyota.ntt@gmail.com>, christoph.berg@credativ.de, pgsql-bugs@lists.postgresql.org
Date: 2022-06-13T06:45:05Z
Lists: pgsql-bugs
Attachments
- psql-on-error.patch (text/x-diff) patch
On Fri, Jun 10, 2022 at 12:12:11PM -0400, Tom Lane wrote: > Alternatively, one could argue that once we've decided to issue > ROLLBACK, there's not really any reason to continue performing > additional -c/-f actions, so that a sufficient fix would be to > get rid of the loop's ON_ERROR_STOP conditionality: > > - if (successResult != EXIT_SUCCESS && pset.on_error_stop) > + if (successResult != EXIT_SUCCESS) > break; This suggestion does not look right to me with --single-transaction. If not using ON_ERROR_STOP, I think that we should still loop through all the switches given by the caller and force a COMMIT all the time because the intention is that we don't care about failures while processing. This gives me the attached as a result for HEAD, where we would issue a ROLLBACK only when using ON_ERROR_STOP to stop immediately if there is a backend-side error or a client-side error. I have expanded the tests where not using ON_ERROR_STOP, with errors triggered at the end of the set of switches. Now, do we really want to introduce this new behavior on HEAD? We are post-beta so this does not me make me really comfortable if both Robert and you don't like the change, even if the behavior of --single-transaction/ON_ERROR_STOP on client-side failure is weird to me and others from upthread. If you'd prefer see the original logic in place, I don't mind putting the code in its previous shape. However, I would like to keep all those TAP tests because we have zero coverage in this area, and we have the base file to be able to do so now. -- Michael
Commits
-
Tweak behavior of psql --single-transaction depending on ON_ERROR_STOP
- a3ff08e0b08d 15.0 landed
-
Doc: remove a04ccf6df from release notes, now that it's reverted.
- 18f66a1a91bd 14.4 landed
-
Revert "Fix psql's single transaction mode on client-side errors with -c/-f switches".
- f25b5519c99a 14.4 landed
- db713aa7fcbe 10.22 landed
- aaa88d3828c3 11.17 landed
- 3f7f06738529 13.8 landed
- 030da9b6fd52 12.12 landed
-
Fix psql's single transaction mode on client-side errors with -c/-f switches
- c3df4d53ca4a 10.22 landed
- b0bd9327dd74 11.17 landed
- 0a1e4f0ca788 12.12 landed
- b364cfdfaf6b 13.8 landed
- a04ccf6dfb4a 14.4 landed
- 157f8739ad18 15.0 landed