mirror of
https://github.com/postgres/postgres.git
synced 2025-07-09 22:41:56 +03:00
expression eval: Don't redundantly keep track of AggState.
It's already tracked via ExprState->parent, so we don't need to also
include it in ExprEvalStep. When that code originally was written
ExprState->parent didn't exist, but it since has been introduced in
6719b238e8
.
Author: Andres Freund
Discussion: https://postgr.es/m/20191023163849.sosqbfs5yenocez3@alap3.anarazel.de
This commit is contained in:
@ -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;
|
||||
|
@ -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)
|
||||
|
Reference in New Issue
Block a user