From: Tom Lane Date: Fri, 19 Jun 2015 15:41:45 +0000 (-0400) Subject: Fix bogus range_table_mutator() logic for RangeTblEntry.tablesample. X-Git-Tag: REL9_5_ALPHA1~53 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=be87143fe90adf8862791aeddd76151e88ce5603;p=postgresql Fix bogus range_table_mutator() logic for RangeTblEntry.tablesample. Must make a copy of the TableSampleClause node; the previous coding modified the input data structure in-place. Petr Jelinek --- diff --git a/src/backend/nodes/nodeFuncs.c b/src/backend/nodes/nodeFuncs.c index a2bcca5b75..b1e3e6e489 100644 --- a/src/backend/nodes/nodeFuncs.c +++ b/src/backend/nodes/nodeFuncs.c @@ -2870,10 +2870,14 @@ range_table_mutator(List *rtable, case RTE_RELATION: if (rte->tablesample) { - MUTATE(rte->tablesample->args, rte->tablesample->args, + CHECKFLATCOPY(newrte->tablesample, rte->tablesample, + TableSampleClause); + MUTATE(newrte->tablesample->args, + newrte->tablesample->args, List *); - MUTATE(rte->tablesample->repeatable, - rte->tablesample->repeatable, Node *); + MUTATE(newrte->tablesample->repeatable, + newrte->tablesample->repeatable, + Node *); } break; case RTE_CTE: