psql: immediately exit after an error?

Started by David Garamondover 21 years ago5 messagesgeneral
Jump to latest
#1David Garamond
lists@zara.6.isreserved.com

Can psql be told to exit immediately after an error (especially when
doing commands from a file, -f)? This is the default behaviour of the
mysql client, except when we give it -f option ("force").

The problem is, when restoring a dump, a failure at the some point might
cause the subsequent commands to produce wrong results (e.g. I redefine
a builtin function with a plruby function with different behaviour, but
plruby failed to be installed due to wrong path. Thus the subsequent
commands are executed using the builtin function which is not the
expected one.) Furthermore, you can't check on psql exit code to see
whether _any_ command was not successfully executed.

Of course one should examine the full psql output after a restore
anyway, and the option to exit immediately after an error can save time
(especially for large dumps).

--
dave

#2mike g
mike@thegodshalls.com
In reply to: David Garamond (#1)
Re: psql: immediately exit after an error?

I would think that depends upon how the sql in the file is coded. You can use the RAISE NOTICE / ERROR commands to abort a function's execution.

Show quoted text

Can psql be told to exit immediately after an error (especially when
doing commands from a file, -f)? This is the default behaviour of the
mysql client, except when we give it -f option ("force").

The problem is, when restoring a dump, a failure at the some point might
cause the subsequent commands to produce wrong results (e.g. I redefine
a builtin function with a plruby function with different behaviour, but
plruby failed to be installed due to wrong path. Thus the subsequent
commands are executed using the builtin function which is not the
expected one.) Furthermore, you can't check on psql exit code to see
whether _any_ command was not successfully executed.

Of course one should examine the full psql output after a restore
anyway, and the option to exit immediately after an error can save time
(especially for large dumps).

--
dave

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faqs/FAQ.html

#3Peter Eisentraut
peter_e@gmx.net
In reply to: David Garamond (#1)
Re: psql: immediately exit after an error?

David Garamond wrote:

Can psql be told to exit immediately after an error (especially when
doing commands from a file, -f)? This is the default behaviour of the
mysql client, except when we give it -f option ("force").

\set ON_ERROR_STOP on

Look into the psql man page for additional semantic details.

--
Peter Eisentraut
http://developer.postgresql.org/~petere/

#4David Garamond
lists@zara.6.isreserved.com
In reply to: David Garamond (#1)
Re: psql: immediately exit after an error?

Peter Eisentraut wrote:

Can psql be told to exit immediately after an error (especially when
doing commands from a file, -f)? This is the default behaviour of the
mysql client, except when we give it -f option ("force").

\set ON_ERROR_STOP on

Look into the psql man page for additional semantic details.

Thanks! Just what I was looking for.

Btw, may I suggest this line be added by pg_dump/pg_dumpall? Or even the
default being changed to on when -f is given? Or maybe add a command
line option for this?

--
dave

#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: David Garamond (#4)
Re: psql: immediately exit after an error?

David Garamond <lists@zara.6.isreserved.com> writes:

Peter Eisentraut wrote:

\set ON_ERROR_STOP on

Btw, may I suggest this line be added by pg_dump/pg_dumpall?

No. The fact that pg_dump scripts keep going is a feature, not a bug.
We recently changed pg_restore to match that behavior, in fact, because
people were constantly having trouble when it didn't.

regards, tom lane