summaryrefslogtreecommitdiff
path: root/src/backend/executor/execQual.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/executor/execQual.c')
-rw-r--r--src/backend/executor/execQual.c29
1 files changed, 7 insertions, 22 deletions
diff --git a/src/backend/executor/execQual.c b/src/backend/executor/execQual.c
index 01e04d3b14e..d04d1a89a7f 100644
--- a/src/backend/executor/execQual.c
+++ b/src/backend/executor/execQual.c
@@ -4510,35 +4510,20 @@ ExecInitExpr(Expr *node, PlanState *parent)
case T_Aggref:
{
AggrefExprState *astate = makeNode(AggrefExprState);
- AggState *aggstate = (AggState *) parent;
- Aggref *aggref = (Aggref *) node;
astate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalAggref;
- if (!aggstate || !IsA(aggstate, AggState))
+ if (parent && IsA(parent, AggState))
{
- /* planner messed up */
- elog(ERROR, "Aggref found in non-Agg plan node");
- }
- if (aggref->aggpartial == aggstate->finalizeAggs)
- {
- /* planner messed up */
- if (aggref->aggpartial)
- elog(ERROR, "partial Aggref found in finalize agg plan node");
- else
- elog(ERROR, "non-partial Aggref found in non-finalize agg plan node");
- }
+ AggState *aggstate = (AggState *) parent;
- if (aggref->aggcombine != aggstate->combineStates)
+ aggstate->aggs = lcons(astate, aggstate->aggs);
+ aggstate->numaggs++;
+ }
+ else
{
/* planner messed up */
- if (aggref->aggcombine)
- elog(ERROR, "combine Aggref found in non-combine agg plan node");
- else
- elog(ERROR, "non-combine Aggref found in combine agg plan node");
+ elog(ERROR, "Aggref found in non-Agg plan node");
}
-
- aggstate->aggs = lcons(astate, aggstate->aggs);
- aggstate->numaggs++;
state = (ExprState *) astate;
}
break;