]> granicus.if.org Git - postgresql/commitdiff
Put back copyObject() call I removed in a fit of brain fade. This one
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 25 Feb 2007 17:44:01 +0000 (17:44 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 25 Feb 2007 17:44:01 +0000 (17:44 +0000)
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.

src/backend/optimizer/plan/createplan.c

index dbfa2c4e58e415981f8b538a7ef535580dea9697..6c4bde14213bebe6c1f2b116a581a2623533be3b 100644 (file)
@@ -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