public inbox for [email protected]
help / color / mirror / Atom feedFrom: bt22nakamorit <[email protected]>
To: PostgreSQL Hackers <[email protected]>
Subject: Make ON_ERROR_STOP stop on shell script failure
Date: Fri, 16 Sep 2022 15:55:33 +0900
Message-ID: <[email protected]> (raw)
Hi,
"""\set ON_ERROR_STOP on""" stops any subsequent incoming query that
comes after an error of an SQL, but does not stop after a shell script
ran by """\! <some command>""" returning values other than 0, -1, or
127, which suggests a failure in the result of the shell script.
For example, suppose that below is an SQL file.
\set ON_ERROR_STOP on
SELECT 1;
\! false
SELECT 2;
The current design allows SELECT 2 even though the shell script returns
a value indicating a failure.
I thought that this action is rather unexpected since, based on the word
"""ON_ERROR_STOP""", ones may expect that failures of shell scripts
should halt the incoming instructions as well.
One clear solution is to let failures of shell script stop incoming
queries just like how errors of SQLs do currently. Thoughts?
Tatsu
Attachments:
[text/x-diff] stop_error.patch (363B, ../[email protected]/2-stop_error.patch)
download | inline diff:
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;
}
view thread (20+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected]
Subject: Re: Make ON_ERROR_STOP stop on shell script failure
In-Reply-To: <[email protected]>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox