Hello David,

Question: is there any way to really abort a psql script from an included file?

Under what circumstances would it be appropriate for a script to take
it on itself to decide that?  It has no way of knowing what the next -f
option is or what the user intended.

Can we add an exit code argument to the \quit meta-command that could be
set to non-zero and, combined with ON_ERROR_STOP, produces the desired
effect of aborting everything just like an error under ON_ERROR_STOP does
(which is the workaround here I suppose, but an ugly one that involves the
server).

I like the simple idea of adding an optional exit status argument to \quit. I'm unsure whether "ON_ERROR_STOP" should or should not change the behavior, or whether it should just exit(n) with \quit n.

Note that using quit to abort a psql script is already used when loading extensions to prevent them to be run directly by psql:

    -- from some sql files in "contrib/pg_stat_statements/":
    \echo Use "ALTER EXTENSION pg_stat_statements UPDATE TO '1.10'" to load 
this file. \quit

But the same trick would fail if the guard is reach with an include.

--
Fabien.


Reply via email to