diff options
Diffstat (limited to 'src/backend/executor')
-rw-r--r-- | src/backend/executor/execExpr.c | 5 | ||||
-rw-r--r-- | src/backend/executor/execExprInterp.c | 17 |
2 files changed, 7 insertions, 15 deletions
diff --git a/src/backend/executor/execExpr.c b/src/backend/executor/execExpr.c index af97f810067..121eff97a0c 100644 --- a/src/backend/executor/execExpr.c +++ b/src/backend/executor/execExpr.c @@ -810,7 +810,6 @@ ExecInitExprRec(Expr *node, ExprState *state, elog(ERROR, "GroupingFunc found in non-Agg plan node"); scratch.opcode = EEOP_GROUPING_FUNC; - scratch.d.grouping_func.parent = (AggState *) state->parent; agg = (Agg *) (state->parent->plan); @@ -3050,7 +3049,6 @@ ExecBuildAggTrans(AggState *aggstate, AggStatePerPhase phase, else scratch.opcode = EEOP_AGG_DESERIALIZE; - scratch.d.agg_deserialize.aggstate = aggstate; scratch.d.agg_deserialize.fcinfo_data = ds_fcinfo; scratch.d.agg_deserialize.jumpnull = -1; /* adjust later */ scratch.resvalue = &trans_fcinfo->args[argno + 1].value; @@ -3252,7 +3250,6 @@ ExecBuildAggTransCall(ExprState *state, AggState *aggstate, pertrans->initValueIsNull) { scratch->opcode = EEOP_AGG_INIT_TRANS; - scratch->d.agg_init_trans.aggstate = aggstate; scratch->d.agg_init_trans.pertrans = pertrans; scratch->d.agg_init_trans.setno = setno; scratch->d.agg_init_trans.setoff = setoff; @@ -3269,7 +3266,6 @@ ExecBuildAggTransCall(ExprState *state, AggState *aggstate, fcinfo->flinfo->fn_strict) { scratch->opcode = EEOP_AGG_STRICT_TRANS_CHECK; - scratch->d.agg_strict_trans_check.aggstate = aggstate; scratch->d.agg_strict_trans_check.setno = setno; scratch->d.agg_strict_trans_check.setoff = setoff; scratch->d.agg_strict_trans_check.transno = transno; @@ -3294,7 +3290,6 @@ ExecBuildAggTransCall(ExprState *state, AggState *aggstate, else scratch->opcode = EEOP_AGG_ORDERED_TRANS_TUPLE; - scratch->d.agg_trans.aggstate = aggstate; scratch->d.agg_trans.pertrans = pertrans; scratch->d.agg_trans.setno = setno; scratch->d.agg_trans.setoff = setoff; diff --git a/src/backend/executor/execExprInterp.c b/src/backend/executor/execExprInterp.c index 19c117436aa..35eb8b99f69 100644 --- a/src/backend/executor/execExprInterp.c +++ b/src/backend/executor/execExprInterp.c @@ -1544,7 +1544,7 @@ ExecInterpExpr(ExprState *state, ExprContext *econtext, bool *isnull) EEO_CASE(EEOP_AGG_DESERIALIZE) { FunctionCallInfo fcinfo = op->d.agg_deserialize.fcinfo_data; - AggState *aggstate = op->d.agg_deserialize.aggstate; + AggState *aggstate = castNode(AggState, state->parent); MemoryContext oldContext; /* @@ -1596,10 +1596,9 @@ ExecInterpExpr(ExprState *state, ExprContext *econtext, bool *isnull) */ EEO_CASE(EEOP_AGG_INIT_TRANS) { - AggState *aggstate; + AggState *aggstate = castNode(AggState, state->parent); AggStatePerGroup pergroup; - aggstate = op->d.agg_init_trans.aggstate; pergroup = &aggstate->all_pergroups [op->d.agg_init_trans.setoff] [op->d.agg_init_trans.transno]; @@ -1624,10 +1623,9 @@ ExecInterpExpr(ExprState *state, ExprContext *econtext, bool *isnull) /* check that a strict aggregate's input isn't NULL */ EEO_CASE(EEOP_AGG_STRICT_TRANS_CHECK) { - AggState *aggstate; + AggState *aggstate = castNode(AggState, state->parent); AggStatePerGroup pergroup; - aggstate = op->d.agg_strict_trans_check.aggstate; pergroup = &aggstate->all_pergroups [op->d.agg_strict_trans_check.setoff] [op->d.agg_strict_trans_check.transno]; @@ -1645,14 +1643,13 @@ ExecInterpExpr(ExprState *state, ExprContext *econtext, bool *isnull) */ EEO_CASE(EEOP_AGG_PLAIN_TRANS_BYVAL) { - AggState *aggstate; + AggState *aggstate = castNode(AggState, state->parent); AggStatePerTrans pertrans; AggStatePerGroup pergroup; FunctionCallInfo fcinfo; MemoryContext oldContext; Datum newVal; - aggstate = op->d.agg_trans.aggstate; pertrans = op->d.agg_trans.pertrans; pergroup = &aggstate->all_pergroups @@ -1696,14 +1693,13 @@ ExecInterpExpr(ExprState *state, ExprContext *econtext, bool *isnull) */ EEO_CASE(EEOP_AGG_PLAIN_TRANS) { - AggState *aggstate; + AggState *aggstate = castNode(AggState, state->parent); AggStatePerTrans pertrans; AggStatePerGroup pergroup; FunctionCallInfo fcinfo; MemoryContext oldContext; Datum newVal; - aggstate = op->d.agg_trans.aggstate; pertrans = op->d.agg_trans.pertrans; pergroup = &aggstate->all_pergroups @@ -3846,8 +3842,9 @@ ExecEvalXmlExpr(ExprState *state, ExprEvalStep *op) void ExecEvalGroupingFunc(ExprState *state, ExprEvalStep *op) { + AggState *aggstate = castNode(AggState, state->parent); int result = 0; - Bitmapset *grouped_cols = op->d.grouping_func.parent->grouped_cols; + Bitmapset *grouped_cols = aggstate->grouped_cols; ListCell *lc; foreach(lc, op->d.grouping_func.clauses) |