psql: ON_ERROR_STOP command-line flag for scripts

Started by Mike Toewsover 15 years ago2 messages
#1Mike Toews
mwtoews@gmail.com

Hey hackers,

I routinely run SQL scripts using pgsql -f myscript.sql. If there is
an error mid-way in a large script file, due to the default
ON_ERROR_STOP=0, I see repeated "ERROR:  current transaction is
aborted, commands ignored until end of transaction block" until the
end of the script. Often the error is buried at the top of the output
and the following commands are meaningless or misleading messages with
a last ROLLBACK at the bottom. This is particular relevant to new
PostGIS users running postgis.sql that missed a step somewhere.

I know I can either embed a non-SQL command in the SQL file or add
--set ON_ERROR_STOP =1 to the command arguments, however I'd like a
simpler command interface (just like there is -q / --quiet for QUIET).
Could I suggest a new command-line option -r / --on-error-stop for
psql? I have limited programming with C, should I bother submitting a
patch, or is someone else eager?

Thanks for your consideration.

-Mike

#2Stephen Frost
sfrost@snowman.net
In reply to: Mike Toews (#1)
Re: psql: ON_ERROR_STOP command-line flag for scripts

* Mike Toews (mwtoews@gmail.com) wrote:

I know I can either embed a non-SQL command in the SQL file or add
--set ON_ERROR_STOP =1 to the command arguments, however I'd like a
simpler command interface (just like there is -q / --quiet for QUIET).
Could I suggest a new command-line option -r / --on-error-stop for
psql? I have limited programming with C, should I bother submitting a
patch, or is someone else eager?

Honestly, I'd love to see something like "--script" that does a number
of things:

Forcibly set (regardless of .psqlrc, in particular):
--no-psqlrc
--echo-all
--single-transaction

ON_ERROR_ROLLBACK=off
ON_ERROR_STOP=on
AUTOCOMMIT=off

Assume "-f -" if no -f passed in (provided this actually works as
expected.. I'm not sure it does, I remember there being some discussion
about this recently).

Thanks,

Stephen