mirror of
https://github.com/postgres/postgres.git
synced 2025-11-07 19:06:32 +03:00
Small HAVING cleanup.
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.20 1998/02/26 04:32:50 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.21 1998/03/31 23:30:49 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -187,7 +187,9 @@ query_planner(Query *root,
|
||||
*/
|
||||
if (constant_qual)
|
||||
{
|
||||
subplan = (Plan *) make_result((!root->hasAggs && !root->groupClause)
|
||||
subplan = (Plan *) make_result((!root->hasAggs &&
|
||||
!root->groupClause &&
|
||||
!root->havingQual)
|
||||
? tlist : subplan->targetlist,
|
||||
(Node *) constant_qual,
|
||||
subplan);
|
||||
@@ -195,7 +197,7 @@ query_planner(Query *root,
|
||||
/*
|
||||
* Change all varno's of the Result's node target list.
|
||||
*/
|
||||
if (!root->hasAggs && !root->groupClause)
|
||||
if (!root->hasAggs && !root->groupClause && !root->havingQual)
|
||||
set_tlist_references(subplan);
|
||||
|
||||
return subplan;
|
||||
@@ -216,7 +218,7 @@ query_planner(Query *root,
|
||||
*/
|
||||
else
|
||||
{
|
||||
if (!root->hasAggs && !root->groupClause)
|
||||
if (!root->hasAggs && !root->groupClause && !root->havingQual)
|
||||
subplan->targetlist = flatten_tlist_vars(tlist,
|
||||
subplan->targetlist);
|
||||
return subplan;
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planner.c,v 1.24 1998/03/30 16:36:04 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planner.c,v 1.25 1998/03/31 23:30:51 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -292,11 +292,10 @@ union_planner(Query *parse)
|
||||
((Agg *) result_plan)->aggs =
|
||||
set_agg_tlist_references((Agg *) result_plan);
|
||||
|
||||
/***S*H***/
|
||||
if(parse->havingQual!=NULL) {
|
||||
if(parse->havingQual != NULL) {
|
||||
List *clause;
|
||||
|
||||
/***S*H***/ /* set qpqual of having clause */
|
||||
/* set qpqual of having clause */
|
||||
((Agg *) result_plan)->plan.qual=cnfify((Expr *)parse->havingQual,true);
|
||||
|
||||
foreach(clause, ((Agg *) result_plan)->plan.qual)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/prep/prepunion.c,v 1.22 1998/03/31 04:43:49 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/prep/prepunion.c,v 1.23 1998/03/31 23:30:59 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -280,6 +280,8 @@ plan_inherit_query(List *relids,
|
||||
new_root->uniqueFlag = NULL;
|
||||
new_root->sortClause = NULL;
|
||||
new_root->groupClause = NULL;
|
||||
new_root->havingQual = NULL;
|
||||
|
||||
if (new_root->hasAggs)
|
||||
{
|
||||
new_root->hasAggs = false;
|
||||
|
||||
Reference in New Issue
Block a user