diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c index be6e93e261208c5819bd58c06a83466e3c25fd07..b187b03666a30ff40825a34c240a08a13f7789c2 100644 --- a/src/backend/parser/analyze.c +++ b/src/backend/parser/analyze.c @@ -316,12 +316,12 @@ transformDeleteStmt(ParseState *pstate, DeleteStmt *stmt) qry->jointree = makeFromExpr(pstate->p_joinlist, qual); qry->hasSubLinks = pstate->p_hasSubLinks; - qry->hasAggs = pstate->p_hasAggs; - if (pstate->p_hasAggs) - parseCheckAggregates(pstate, qry); qry->hasWindowFuncs = pstate->p_hasWindowFuncs; if (pstate->p_hasWindowFuncs) parseCheckWindowFuncs(pstate, qry); + qry->hasAggs = pstate->p_hasAggs; + if (pstate->p_hasAggs) + parseCheckAggregates(pstate, qry); assign_query_collations(pstate, qry); @@ -970,12 +970,12 @@ transformSelectStmt(ParseState *pstate, SelectStmt *stmt) qry->jointree = makeFromExpr(pstate->p_joinlist, qual); qry->hasSubLinks = pstate->p_hasSubLinks; - qry->hasAggs = pstate->p_hasAggs; - if (pstate->p_hasAggs || qry->groupClause || qry->havingQual) - parseCheckAggregates(pstate, qry); qry->hasWindowFuncs = pstate->p_hasWindowFuncs; if (pstate->p_hasWindowFuncs) parseCheckWindowFuncs(pstate, qry); + qry->hasAggs = pstate->p_hasAggs; + if (pstate->p_hasAggs || qry->groupClause || qry->havingQual) + parseCheckAggregates(pstate, qry); foreach(l, stmt->lockingClause) { @@ -1448,12 +1448,12 @@ transformSetOperationStmt(ParseState *pstate, SelectStmt *stmt) qry->jointree = makeFromExpr(pstate->p_joinlist, NULL); qry->hasSubLinks = pstate->p_hasSubLinks; - qry->hasAggs = pstate->p_hasAggs; - if (pstate->p_hasAggs || qry->groupClause || qry->havingQual) - parseCheckAggregates(pstate, qry); qry->hasWindowFuncs = pstate->p_hasWindowFuncs; if (pstate->p_hasWindowFuncs) parseCheckWindowFuncs(pstate, qry); + qry->hasAggs = pstate->p_hasAggs; + if (pstate->p_hasAggs || qry->groupClause || qry->havingQual) + parseCheckAggregates(pstate, qry); foreach(l, lockingClause) {