From 0ecfd88afc56d564b1c4c60492c80ca716694ec6 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Fri, 1 Dec 2023 12:12:31 +0100 Subject: [PATCH v1 3/3] Remove custom RangeTblEntry read/write --- src/backend/nodes/outfuncs.c | 80 ----------------------------- src/backend/nodes/readfuncs.c | 92 ---------------------------------- src/include/nodes/parsenodes.h | 12 +++-- 3 files changed, 8 insertions(+), 176 deletions(-) diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index e66a99247e..ded3c59b76 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -489,86 +489,6 @@ _outExtensibleNode(StringInfo str, const ExtensibleNode *node) methods->nodeOut(str, node); } -static void -_outRangeTblEntry(StringInfo str, const RangeTblEntry *node) -{ - WRITE_NODE_TYPE("RANGETBLENTRY"); - - /* put alias + eref first to make dump more legible */ - WRITE_NODE_FIELD(alias); - WRITE_NODE_FIELD(eref); - WRITE_ENUM_FIELD(rtekind, RTEKind); - - switch (node->rtekind) - { - case RTE_RELATION: - WRITE_OID_FIELD(relid); - WRITE_CHAR_FIELD(relkind); - WRITE_INT_FIELD(rellockmode); - WRITE_NODE_FIELD(tablesample); - WRITE_UINT_FIELD(perminfoindex); - break; - case RTE_SUBQUERY: - WRITE_NODE_FIELD(subquery); - WRITE_BOOL_FIELD(security_barrier); - /* we re-use these RELATION fields, too: */ - WRITE_OID_FIELD(relid); - WRITE_CHAR_FIELD(relkind); - WRITE_INT_FIELD(rellockmode); - WRITE_UINT_FIELD(perminfoindex); - break; - case RTE_JOIN: - WRITE_ENUM_FIELD(jointype, JoinType); - WRITE_INT_FIELD(joinmergedcols); - WRITE_NODE_FIELD(joinaliasvars); - WRITE_NODE_FIELD(joinleftcols); - WRITE_NODE_FIELD(joinrightcols); - WRITE_NODE_FIELD(join_using_alias); - break; - case RTE_FUNCTION: - WRITE_NODE_FIELD(functions); - WRITE_BOOL_FIELD(funcordinality); - break; - case RTE_TABLEFUNC: - WRITE_NODE_FIELD(tablefunc); - break; - case RTE_VALUES: - WRITE_NODE_FIELD(values_lists); - WRITE_NODE_FIELD(coltypes); - WRITE_NODE_FIELD(coltypmods); - WRITE_NODE_FIELD(colcollations); - break; - case RTE_CTE: - WRITE_STRING_FIELD(ctename); - WRITE_UINT_FIELD(ctelevelsup); - WRITE_BOOL_FIELD(self_reference); - WRITE_NODE_FIELD(coltypes); - WRITE_NODE_FIELD(coltypmods); - WRITE_NODE_FIELD(colcollations); - break; - case RTE_NAMEDTUPLESTORE: - WRITE_STRING_FIELD(enrname); - WRITE_FLOAT_FIELD(enrtuples); - WRITE_NODE_FIELD(coltypes); - WRITE_NODE_FIELD(coltypmods); - WRITE_NODE_FIELD(colcollations); - /* we re-use these RELATION fields, too: */ - WRITE_OID_FIELD(relid); - break; - case RTE_RESULT: - /* no extra fields */ - break; - default: - elog(ERROR, "unrecognized RTE kind: %d", (int) node->rtekind); - break; - } - - WRITE_BOOL_FIELD(lateral); - WRITE_BOOL_FIELD(inh); - WRITE_BOOL_FIELD(inFromCl); - WRITE_NODE_FIELD(securityQuals); -} - static void _outA_Expr(StringInfo str, const A_Expr *node) { diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c index cc2021c1f7..0c64e06c38 100644 --- a/src/backend/nodes/readfuncs.c +++ b/src/backend/nodes/readfuncs.c @@ -486,98 +486,6 @@ _readConstraint(void) READ_DONE(); } -static RangeTblEntry * -_readRangeTblEntry(void) -{ - READ_LOCALS(RangeTblEntry); - - /* put alias + eref first to make dump more legible */ - READ_NODE_FIELD(alias); - READ_NODE_FIELD(eref); - READ_ENUM_FIELD(rtekind, RTEKind); - - switch (local_node->rtekind) - { - case RTE_RELATION: - READ_OID_FIELD(relid); - READ_CHAR_FIELD(relkind); - READ_INT_FIELD(rellockmode); - READ_NODE_FIELD(tablesample); - READ_UINT_FIELD(perminfoindex); - break; - case RTE_SUBQUERY: - READ_NODE_FIELD(subquery); - READ_BOOL_FIELD(security_barrier); - /* we re-use these RELATION fields, too: */ - READ_OID_FIELD(relid); - READ_CHAR_FIELD(relkind); - READ_INT_FIELD(rellockmode); - READ_UINT_FIELD(perminfoindex); - break; - case RTE_JOIN: - READ_ENUM_FIELD(jointype, JoinType); - READ_INT_FIELD(joinmergedcols); - READ_NODE_FIELD(joinaliasvars); - READ_NODE_FIELD(joinleftcols); - READ_NODE_FIELD(joinrightcols); - READ_NODE_FIELD(join_using_alias); - break; - case RTE_FUNCTION: - READ_NODE_FIELD(functions); - READ_BOOL_FIELD(funcordinality); - break; - case RTE_TABLEFUNC: - READ_NODE_FIELD(tablefunc); - /* The RTE must have a copy of the column type info, if any */ - if (local_node->tablefunc) - { - TableFunc *tf = local_node->tablefunc; - - local_node->coltypes = tf->coltypes; - local_node->coltypmods = tf->coltypmods; - local_node->colcollations = tf->colcollations; - } - break; - case RTE_VALUES: - READ_NODE_FIELD(values_lists); - READ_NODE_FIELD(coltypes); - READ_NODE_FIELD(coltypmods); - READ_NODE_FIELD(colcollations); - break; - case RTE_CTE: - READ_STRING_FIELD(ctename); - READ_UINT_FIELD(ctelevelsup); - READ_BOOL_FIELD(self_reference); - READ_NODE_FIELD(coltypes); - READ_NODE_FIELD(coltypmods); - READ_NODE_FIELD(colcollations); - break; - case RTE_NAMEDTUPLESTORE: - READ_STRING_FIELD(enrname); - READ_FLOAT_FIELD(enrtuples); - READ_NODE_FIELD(coltypes); - READ_NODE_FIELD(coltypmods); - READ_NODE_FIELD(colcollations); - /* we re-use these RELATION fields, too: */ - READ_OID_FIELD(relid); - break; - case RTE_RESULT: - /* no extra fields */ - break; - default: - elog(ERROR, "unrecognized RTE kind: %d", - (int) local_node->rtekind); - break; - } - - READ_BOOL_FIELD(lateral); - READ_BOOL_FIELD(inh); - READ_BOOL_FIELD(inFromCl); - READ_NODE_FIELD(securityQuals); - - READ_DONE(); -} - static A_Expr * _readA_Expr(void) { diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index a97f3cb16f..d3b1af6531 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -1018,8 +1018,6 @@ typedef enum RTEKind typedef struct RangeTblEntry { - pg_node_attr(custom_read_write) - NodeTag type; RTEKind rtekind; /* see above */ @@ -1030,6 +1028,14 @@ typedef struct RangeTblEntry * code that is being actively worked on. FIXME someday. */ + /* + * Fields valid in all RTEs: + * + * put alias + eref first to make dump more legible + */ + Alias *alias pg_node_attr(query_jumble_ignore); /* user-written alias clause, if any */ + Alias *eref pg_node_attr(query_jumble_ignore); /* expanded reference names */ + /* * Fields valid for a plain relation RTE (else zero): * @@ -1188,8 +1194,6 @@ typedef struct RangeTblEntry /* * Fields valid in all RTEs: */ - Alias *alias pg_node_attr(query_jumble_ignore); /* user-written alias clause, if any */ - Alias *eref pg_node_attr(query_jumble_ignore); /* expanded reference names */ bool lateral pg_node_attr(query_jumble_ignore); /* subquery, function, or values is LATERAL? */ bool inh; /* inheritance requested? */ bool inFromCl pg_node_attr(query_jumble_ignore); /* present in FROM clause? */ -- 2.43.0