diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml index 9494f28063..2395678938 100644 --- a/doc/src/sgml/ref/psql-ref.sgml +++ b/doc/src/sgml/ref/psql-ref.sgml @@ -4143,7 +4143,9 @@ bar By default, command processing continues after an error. When this variable is set to on, processing will instead stop - immediately. In interactive mode, + immediately. A nonzero exit status of a shell command, which indicates + failure, is also interpreted as an error that stops the processing. + In interactive mode, psql will return to the command prompt; otherwise, psql will exit, returning error code 3 to distinguish this case from fatal error diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index a141146e70..7445ca04ff 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -4989,6 +4989,10 @@ do_shell(const char *command) pg_log_error("\\!: failed"); return false; } + else if (result != 0) { + pg_log_error("command failed"); + return false; + } return true; }