summaryrefslogtreecommitdiff
path: root/src/backend/executor/execExprInterp.c
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2020-02-06 19:06:16 -0800
committerAndres Freund <andres@anarazel.de>2020-02-06 19:54:43 -0800
commit1fdb7f9789c4550204cd62d1746a7deed1dc4c29 (patch)
tree877c68ff731bf42a811be492dca9c79db71494be /src/backend/executor/execExprInterp.c
parent1ec7679f1b67e84be688a311dce234eeaa1d5de8 (diff)
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 6719b238e8f. Author: Andres Freund Discussion: https://postgr.es/m/20191023163849.sosqbfs5yenocez3@alap3.anarazel.de
Diffstat (limited to 'src/backend/executor/execExprInterp.c')
-rw-r--r--src/backend/executor/execExprInterp.c17
1 files changed, 7 insertions, 10 deletions
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)