Thread: pgsql: Tighten up parsing logic in gen_node_support.pl.

pgsql: Tighten up parsing logic in gen_node_support.pl.

From
Tom Lane
Date:
Tighten up parsing logic in gen_node_support.pl.

Teach this script to handle function pointer fields honestly.
Previously they were just silently ignored, but that's not likely to
be a behavior we can accept indefinitely.  This mostly entails fixing
it so that a field declaration spanning multiple lines can be parsed,
because we have a bunch of such fields that're laid out that way.
But that's a good improvement in its own right.

With that change and a minor regex adjustment, the only struct it
fails to parse in the node-defining headers is A_Const, because
of the embedded union.  The path of least resistance is to move
that union declaration outside the struct.

Having done those things, we can make it error out if it finds
any within-struct syntax it doesn't understand, which seems like
a pretty important property for robustness.

This commit doesn't change the output files at all; it's just in
the way of future-proofing.

Discussion: https://postgr.es/m/2593369.1657759779@sss.pgh.pa.us

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/7c0eb3c622eb0882f460805109f244679b340964

Modified Files
--------------
src/backend/nodes/gen_node_support.pl | 77 +++++++++++++++++++++++++++++++++--
src/include/nodes/parsenodes.h        | 28 ++++++-------
src/include/nodes/pathnodes.h         |  5 ++-
3 files changed, 90 insertions(+), 20 deletions(-)