Thread: psql: immediately exit after an error?

psql: immediately exit after an error?

From
David Garamond
Date:
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


Re: psql: immediately exit after an error?

From
Mike G
Date:
I would think that depends upon how the sql in the file is coded.  You can use the RAISE NOTICE / ERROR commands to
aborta function's execution. 

> 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

Re: psql: immediately exit after an error?

From
Peter Eisentraut
Date:
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/


Re: psql: immediately exit after an error?

From
David Garamond
Date:
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

Re: psql: immediately exit after an error?

From
Tom Lane
Date:
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