pgsql: Fix behavior of ecpg's "EXEC SQL elif name".

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix behavior of ecpg's "EXEC SQL elif name".
Date: 2020-08-03 13:46:25
Message-ID: E1k2anJ-0008Ee-1r@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix behavior of ecpg's "EXEC SQL elif name".

This ought to work much like C's "#elif defined(name)"; but the code
implemented it in a way equivalent to endif followed by ifdef, so that
it didn't matter whether any previous branch of the IF construct had
succeeded. Fix that; add some test cases covering elif and nested IFs;
and improve the documentation, which also seemed a bit confused.

AFAICS the code has been like this since the feature was added in 1999
(commit b57b0e044). So while it's surely wrong, there might be code
out there relying on the current behavior. Hence, don't back-patch
into stable branches. It seems all right to fix it in v13 though.

Per report from Ashutosh Sharma. Reviewed by Ashutosh Sharma and
Michael Meskes.

Discussion: https://postgr.es/m/CAE9k0P=dQk9X0cU2tN49S7a9tv733-e1pVdpB1P-pWJ5PdTktg@mail.gmail.com

Branch
------
REL_13_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/44cd434ec4a70d2dfbc460492fc0574d08440250

Modified Files
--------------
doc/src/sgml/ecpg.sgml | 50 +++++---
src/interfaces/ecpg/preproc/pgc.l | 128 ++++++++++++++-------
src/interfaces/ecpg/test/expected/preproc-define.c | 79 ++++++++-----
.../ecpg/test/expected/preproc-define.stderr | 48 ++++----
src/interfaces/ecpg/test/preproc/define.pgc | 17 +++
5 files changed, 211 insertions(+), 111 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Robert Haas 2020-08-03 14:36:13 Re: pgsql: Fix some issues with step generation in partition pruning.
Previous Message Tom Lane 2020-08-03 10:57:54 Re: pgsql: Adjust pgcrypto's expected test results for --disable-strong-ran