aboutsummaryrefslogtreecommitdiff
path: root/src/backend/nodes/nodeFuncs.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2015-06-19 11:41:45 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2015-06-19 11:41:56 -0400
commitbe87143fe90adf8862791aeddd76151e88ce5603 (patch)
tree360ff23cb571bb841c85a5feb420f439146f346b /src/backend/nodes/nodeFuncs.c
parented16f73c574660aa0902caa1c0adeba07f8c70a5 (diff)
downloadpostgresql-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.c10
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: