From 4a5efa4057ba8eddad3fe62b9a789bd3a5e03db8 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Fri, 1 Dec 2023 11:54:26 +0100 Subject: [PATCH v1 2/3] Simplify range_table_mutator_impl() --- src/backend/nodes/nodeFuncs.c | 61 +++++++++++++---------------------- 1 file changed, 23 insertions(+), 38 deletions(-) diff --git a/src/backend/nodes/nodeFuncs.c b/src/backend/nodes/nodeFuncs.c index c03f4f23e2..ac195930af 100644 --- a/src/backend/nodes/nodeFuncs.c +++ b/src/backend/nodes/nodeFuncs.c @@ -3688,47 +3688,32 @@ range_table_mutator_impl(List *rtable, RangeTblEntry *newrte; FLATCOPY(newrte, rte, RangeTblEntry); - switch (rte->rtekind) + + MUTATE(newrte->tablesample, rte->tablesample, TableSampleClause *); + + if (!(flags & QTW_IGNORE_RT_SUBQUERIES)) + MUTATE(newrte->subquery, rte->subquery, Query *); + else { - case RTE_RELATION: - MUTATE(newrte->tablesample, rte->tablesample, - TableSampleClause *); - /* we don't bother to copy eref, aliases, etc; OK? */ - break; - case RTE_SUBQUERY: - if (!(flags & QTW_IGNORE_RT_SUBQUERIES)) - MUTATE(newrte->subquery, rte->subquery, Query *); - else - { - /* else, copy RT subqueries as-is */ - newrte->subquery = copyObject(rte->subquery); - } - break; - case RTE_JOIN: - if (!(flags & QTW_IGNORE_JOINALIASES)) - MUTATE(newrte->joinaliasvars, rte->joinaliasvars, List *); - else - { - /* else, copy join aliases as-is */ - newrte->joinaliasvars = copyObject(rte->joinaliasvars); - } - break; - case RTE_FUNCTION: - MUTATE(newrte->functions, rte->functions, List *); - break; - case RTE_TABLEFUNC: - MUTATE(newrte->tablefunc, rte->tablefunc, TableFunc *); - break; - case RTE_VALUES: - MUTATE(newrte->values_lists, rte->values_lists, List *); - break; - case RTE_CTE: - case RTE_NAMEDTUPLESTORE: - case RTE_RESULT: - /* nothing to do */ - break; + /* else, copy RT subqueries as-is */ + newrte->subquery = copyObject(rte->subquery); + } + + if (!(flags & QTW_IGNORE_JOINALIASES)) + MUTATE(newrte->joinaliasvars, rte->joinaliasvars, List *); + else + { + /* else, copy join aliases as-is */ + newrte->joinaliasvars = copyObject(rte->joinaliasvars); } + + MUTATE(newrte->functions, rte->functions, List *); + MUTATE(newrte->tablefunc, rte->tablefunc, TableFunc *); + MUTATE(newrte->values_lists, rte->values_lists, List *); MUTATE(newrte->securityQuals, rte->securityQuals, List *); + + /* we don't bother to copy eref, aliases, etc; OK? */ + newrt = lappend(newrt, newrte); } return newrt; -- 2.43.0