Re: psql dones't reflect exit status if input command via stdin

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

In response to

Browse pgsql-general by date

  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