From: | magodo <wztdyl(at)sina(dot)com> |
---|---|
To: | "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> |
Cc: | Postgres general <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: psql dones't reflect exit status if input command via stdin |
Date: | 2019-05-14 07:24:21 |
Message-ID: | 30cea72b59177bb5a611d540e9fe40d48ba8243b.camel@sina.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Mon, 2019-05-13 at 23:39 -0700, David G. Johnston wrote:
> On Mon, May 13, 2019 at 11:24 PM magodo <wztdyl(at)sina(dot)com> wrote:
> > I found when running command like `# echo "xxx" | psql postgres
> >
> > postgres`, the return code is always 0 even though the command
> > ("xxx")
> >
> > here is of invalid syntax. While the `psql -c` way handled exit
> > code
> >
> > correctly.
>
> Its only required to handle things as documented, which this is:
>
> "psql returns 0 to the shell if it finished normally, 1 if a fatal
> error of its own occurs (e.g. out of memory, file not found), 2 if
> the connection to the server went bad and the session was not
> interactive, and 3 if an error occurred in a script and the variable
> ON_ERROR_STOP was set."
>
> The pipe-version causes psql to execute stdin as a script. By
> default ON_ERROR_STOP is unset. Thus psql finished processing the
> script normally and while it encountered an error it continued past
> the error as opposed to stopping with exit code 3.
>
> Adding "\set ON_ERROR_STOP 1" to your .psqlrc will result in psql
> behaving in the way you expect.
>
> David J.
Hi David,
Thank you for your quick and excellent answer 😊
---
Zhaoting.Weng
From | Date | Subject | |
---|---|---|---|
Next Message | Prakash Ramakrishnan | 2019-05-14 08:21:08 | Re: perl path issue |
Previous Message | David G. Johnston | 2019-05-14 06:39:58 | Re: psql dones't reflect exit status if input command via stdin |