diff options
Diffstat (limited to 'src/backend/optimizer/plan/planmain.c')
-rw-r--r-- | src/backend/optimizer/plan/planmain.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/src/backend/optimizer/plan/planmain.c b/src/backend/optimizer/plan/planmain.c index 69186d82c00..b8b99149ce5 100644 --- a/src/backend/optimizer/plan/planmain.c +++ b/src/backend/optimizer/plan/planmain.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.15 1998/01/07 21:04:04 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.16 1998/01/15 18:59:44 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -71,7 +71,7 @@ query_planner(Query *root, List *constant_qual = NIL; List *var_only_tlist = NIL; List *level_tlist = NIL; - Plan *subplan = (Plan *) NULL; + Plan *subplan = NULL; /* * A command without a target list or qualification is an error, @@ -174,20 +174,19 @@ query_planner(Query *root, */ if (constant_qual) { - Plan *plan; - - plan = (Plan *) make_result(tlist, - (Node *) constant_qual, - subplan); + subplan = (Plan *)make_result((!root->hasAggs && !root->groupClause) + ? tlist : subplan->targetlist, + (Node *) constant_qual, + subplan); /* * Change all varno's of the Result's node target list. */ - set_result_tlist_references((Result *) plan); + if (!root->hasAggs && !root->groupClause) + set_tlist_references(subplan); - return (plan); + return subplan; } - /* * fix up the flattened target list of the plan root node so that * expressions are evaluated. this forces expression evaluations that @@ -201,12 +200,14 @@ query_planner(Query *root, * aggregates fixing only other entries (i.e. - GroupBy-ed and so * fixed by make_groupPlan). - vadim 04/05/97 */ - if (root->groupClause == NULL && root->qry_aggs == NULL) - { - subplan->targetlist = flatten_tlist_vars(tlist, + else + { + if (!root->hasAggs && !root->groupClause) + subplan->targetlist = flatten_tlist_vars(tlist, subplan->targetlist); - } - + return subplan; + } + #ifdef NOT_USED /* * Destructively modify the query plan's targetlist to add fjoin lists @@ -215,7 +216,6 @@ query_planner(Query *root, subplan->targetlist = generate_fjoin(subplan->targetlist); #endif - return (subplan); } /* |