diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2015-06-19 11:41:45 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2015-06-19 11:41:56 -0400 |
commit | be87143fe90adf8862791aeddd76151e88ce5603 (patch) | |
tree | 360ff23cb571bb841c85a5feb420f439146f346b /src/backend/nodes/nodeFuncs.c | |
parent | ed16f73c574660aa0902caa1c0adeba07f8c70a5 (diff) | |
download | postgresql-be87143fe90adf8862791aeddd76151e88ce5603.tar.gz postgresql-be87143fe90adf8862791aeddd76151e88ce5603.zip |
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
Diffstat (limited to 'src/backend/nodes/nodeFuncs.c')
-rw-r--r-- | src/backend/nodes/nodeFuncs.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/backend/nodes/nodeFuncs.c b/src/backend/nodes/nodeFuncs.c index a2bcca5b75a..b1e3e6e4893 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: |