summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2007-02-25 17:44:01 +0000
committerTom Lane2007-02-25 17:44:01 +0000
commit4756ff3dca903dfc525d1c27fd00fad8ca328188 (patch)
treee981dd0127e998a732224e293641c90baabbb0fc
parent7395c761594fbd0f36f6659378c776659167ad7f (diff)
Put back copyObject() call I removed in a fit of brain fade. This one
is still needed despite cleanups in setrefs.c, because the point is to let the inserted Result node compute a different tlist than its input node does. Per example from Jeremy Drake.
-rw-r--r--src/backend/optimizer/plan/createplan.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c
index dbfa2c4e58e..6c4bde14213 100644
--- a/src/backend/optimizer/plan/createplan.c
+++ b/src/backend/optimizer/plan/createplan.c
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/optimizer/plan/createplan.c,v 1.226 2007/02/22 22:00:24 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/optimizer/plan/createplan.c,v 1.227 2007/02/25 17:44:01 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -2740,7 +2740,11 @@ make_sort_from_pathkeys(PlannerInfo *root, Plan *lefttree, List *pathkeys)
* Do we need to insert a Result node?
*/
if (!is_projection_capable_plan(lefttree))
+ {
+ /* copy needed so we don't modify input's tlist below */
+ tlist = copyObject(tlist);
lefttree = (Plan *) make_result(root, tlist, NULL, lefttree);
+ }
/*
* Add resjunk entry to input's tlist