On Thu, May 5, 2011 at 11:20 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> The documentation for ON_ERROR_STOP states, or at least implies by
> omission, that it only affects the behavior in non-interactive scripts:
>
> By default, if non-interactive scripts encounter an error, such
> as a malformed SQL command or internal meta-command, processing
> continues. This has been the traditional behavior of psql but it
> is sometimes not desirable. If this variable is set, script
> processing will immediately terminate. If the script was called
> from another script it will terminate in the same fashion. If
> the outermost script was not called from an interactive psql
> session but rather using the -f option, psql will return error
> code 3, to distinguish this case from fatal error conditions
> (error code 1).
>
> However, it is easily proven that it *does* affect interactive commands;
> just try two commands on one line:
>
> regression=# select 1/0; select 2;
> ERROR: division by zero
> ?column?
> ----------
> 2
> (1 row)
>
> regression=# \set ON_ERROR_STOP 1
> regression=# select 1/0; select 2;
> ERROR: division by zero
> regression=#
>
> Can we get the docs changed to reflect reality?
Here's an attempt at some suitable word-smithing.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company