On Mon, 2019-05-13 at 23:39 -0700, David G. Johnston wrote:
> On Mon, May 13, 2019 at 11:24 PM magodo <wzt...@sina.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


Reply via email to