From 4756ff3dca903dfc525d1c27fd00fad8ca328188 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 25 Feb 2007 17:44:01 +0000 Subject: [PATCH] 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. --- src/backend/optimizer/plan/createplan.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c index dbfa2c4e58..6c4bde1421 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 -- 2.40.0