Re: \if, \elseif, \else, \endif (was Re: PSQL commands: \quit_if, \quit_unless)
Corey Huinker <corey.huinker@gmail.com>
From: Corey Huinker <corey.huinker@gmail.com>
To: Fabien COELHO <coelho@cri.ensmp.fr>
Cc: Daniel Verite <daniel@manitou-mail.org>, Erik Rijkers <er@xs4all.nl>,
Tom Lane <tgl@sss.pgh.pa.us>, Jim Nasby <Jim.Nasby@bluetreble.com>,
PostgreSQL <pgsql-hackers@postgresql.org>, pgsql-hackers-owner@postgresql.org
Date: 2017-02-07T18:49:40Z
Lists: pgsql-hackers
Attachments
- 0001.if_endif.v10.diff (text/plain) patch v10
> > > It seems that ON_ERROR_STOP is mostly ignored by design when in > interactive mode, probably because it is nicer not to disconnect the user > who is actually typing things on a terminal. > > """ > ON_ERROR_STOP > > By default, command processing continues after an error. When this > variable is set to on, processing will instead stop immediately. 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 > conditions, which are reported using error code 1. > """ > This was my previous understanding of ON_ERROR_STOP. Somewhere in the course of developing this patch I lost that. Glad to have it back. The only changes I made were to invalid booleans on if/elif, and the final branch balancing check won't set status to EXIT_USER unless it's non-interactive and ON_ERROR_STOP = on. > \if true new \if is true, executing commands > \endif exited \if, executing commands > \if false new \if is false, ignoring commands until next \elif, \else, or \endif > \endif exited \if, executing commands > \if error unrecognized value "error" for "\if <expr>": boolean expected new \if is invalid, ignoring commands until next \endif > \echo foo inside inactive branch, command ignored. > ^C escaped \if, executing commands > \echo foo foo > \endif encountered un-matched \endif >
Commits
-
Support \if ... \elif ... \else ... \endif in psql scripting.
- e984ef5861df 10.0 landed
-
Add a "void *" passthrough pointer for psqlscan.l's callback functions.
- 895e36bb3f36 10.0 landed