RTE_NAMEDTUPLESTORE, enrtuples and comments

Noah Misch <noah@leadboat.com>

From: Noah Misch <noah@leadboat.com>
To: kgrittn@gmail.com, thomas.munro@enterprisedb.com
Cc: pgsql-hackers@postgresql.org
Date: 2017-06-11T06:25:25Z
Lists: pgsql-hackers
While completing my annual src/backend/nodes/*funcs.c audit, I noticed defects
in commit 18ce3a4 changes to RangeTblEntry:

1. Field relid is under a comment saying it is valid for RTE_RELATION only.
   Fields coltypes, coltypmods and colcollations are under a comment saying
   they are valid for RTE_VALUES and RTE_CTE only.  But _outRangeTblEntry()
   treats all of the above as valid for RTE_NAMEDTUPLESTORE.  Which is right?

2. New fields enrname and enrtuples are set only for RTE_NAMEDTUPLESTORE, yet
   they're under the comment for RTE_VALUES and RTE_CTE.  This pair needs its
   own comment.

3. Each of _{copy,equal,out,read}RangeTblEntry() silently ignores enrtuples.
   _equalRangeTblEntry() ignores enrname, too.  In each case, the function
   should either use the field or have a comment to note that skipping the
   field is intentional.  Which should it be?

This fourth point is not necessarily a defect: I wonder if RangeTblEntry is
the right place for enrtuples.  It's a concept regularly seen in planner data
structures but not otherwise seen at parse tree level.

nm


Commits

  1. Fix problems related to RangeTblEntry members enrname and enrtuples.

  2. Add infrastructure to support EphemeralNamedRelation references.