Re: \if, \elseif, \else, \endif (was Re: PSQL commands: \quit_if, \quit_unless)
Fabien COELHO <coelho@cri.ensmp.fr>
From: Fabien COELHO <coelho@cri.ensmp.fr>
To: Corey Huinker <corey.huinker@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Greg Stark <stark@mit.edu>,
Erik Rijkers <er@xs4all.nl>, Robert Haas <robertmhaas@gmail.com>,
Daniel Verite <daniel@manitou-mail.org>,
Jim Nasby <Jim.Nasby@bluetreble.com>,
PostgreSQL <pgsql-hackers@postgresql.org>,
pgsql-hackers-owner@postgresql.org
Date: 2017-03-01T08:07:36Z
Lists: pgsql-hackers
Hello Corey,
> It doesn't strike me as much cleaner, but it's no worse, either.
Hmmm.
The "if (x) { x = ... ; if (x) {" does not help much to improve
readability and understandability...
My 0.02€ about v19:
If there are two errors, I do not care which one is shown, both will have
to be fixed anyway in the end... So I would suggest to choose the simplest
possible implementation:
on elif:
always eval expression
=> possible eval error
switch
=> including detecting misplaced elif errors
If the second error must absolutely be shown in all cases, then add a
second misplaced elif detection in the eval expression failure branch:
on elif
always eval
if (eval failed)
also checked for misplaced (hey user, you have 2 errors in fact...)
bye bye...
// else eval was fine
switch
including misplaced elif detection
If the committer is angry at these simple approach, then revert to the
strange looking and hard to understand switch-if-switch solution (~ v18,
or some simplified? v19), but I do not think the be weak benefit is worth
the code complexity.
--
Fabien.
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