summaryrefslogtreecommitdiff
path: root/src/backend/executor/execExpr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/executor/execExpr.c')
-rw-r--r--src/backend/executor/execExpr.c40
1 files changed, 21 insertions, 19 deletions
diff --git a/src/backend/executor/execExpr.c b/src/backend/executor/execExpr.c
index 8619246c8e0..af97f810067 100644
--- a/src/backend/executor/execExpr.c
+++ b/src/backend/executor/execExpr.c
@@ -2779,12 +2779,7 @@ static void
ExecInitCoerceToDomain(ExprEvalStep *scratch, CoerceToDomain *ctest,
ExprState *state, Datum *resv, bool *resnull)
{
- ExprEvalStep scratch2 = {0};
DomainConstraintRef *constraint_ref;
- Datum *domainval = NULL;
- bool *domainnull = NULL;
- Datum *save_innermost_domainval;
- bool *save_innermost_domainnull;
ListCell *l;
scratch->d.domaincheck.resulttype = ctest->resulttype;
@@ -2831,6 +2826,10 @@ ExecInitCoerceToDomain(ExprEvalStep *scratch, CoerceToDomain *ctest,
foreach(l, constraint_ref->constraints)
{
DomainConstraintState *con = (DomainConstraintState *) lfirst(l);
+ Datum *domainval = NULL;
+ bool *domainnull = NULL;
+ Datum *save_innermost_domainval;
+ bool *save_innermost_domainnull;
scratch->d.domaincheck.constraintname = con->name;
@@ -2862,6 +2861,8 @@ ExecInitCoerceToDomain(ExprEvalStep *scratch, CoerceToDomain *ctest,
*/
if (get_typlen(ctest->resulttype) == -1)
{
+ ExprEvalStep scratch2 = {0};
+
/* Yes, so make output workspace for MAKE_READONLY */
domainval = (Datum *) palloc(sizeof(Datum));
domainnull = (bool *) palloc(sizeof(bool));
@@ -2932,8 +2933,6 @@ ExecBuildAggTrans(AggState *aggstate, AggStatePerPhase phase,
ExprState *state = makeNode(ExprState);
PlanState *parent = &aggstate->ss.ps;
ExprEvalStep scratch = {0};
- int transno = 0;
- int setoff = 0;
bool isCombine = DO_AGGSPLIT_COMBINE(aggstate->aggsplit);
LastAttnumInfo deform = {0, 0, 0};
@@ -2947,7 +2946,7 @@ ExecBuildAggTrans(AggState *aggstate, AggStatePerPhase phase,
* First figure out which slots, and how many columns from each, we're
* going to need.
*/
- for (transno = 0; transno < aggstate->numtrans; transno++)
+ for (int transno = 0; transno < aggstate->numtrans; transno++)
{
AggStatePerTrans pertrans = &aggstate->pertrans[transno];
@@ -2967,17 +2966,15 @@ ExecBuildAggTrans(AggState *aggstate, AggStatePerPhase phase,
/*
* Emit instructions for each transition value / grouping set combination.
*/
- for (transno = 0; transno < aggstate->numtrans; transno++)
+ for (int transno = 0; transno < aggstate->numtrans; transno++)
{
AggStatePerTrans pertrans = &aggstate->pertrans[transno];
- int argno;
- int setno;
FunctionCallInfo trans_fcinfo = pertrans->transfn_fcinfo;
- ListCell *arg;
- ListCell *bail;
List *adjust_bailout = NIL;
NullableDatum *strictargs = NULL;
bool *strictnulls = NULL;
+ int argno;
+ ListCell *bail;
/*
* If filter present, emit. Do so before evaluating the input, to
@@ -3071,6 +3068,8 @@ ExecBuildAggTrans(AggState *aggstate, AggStatePerPhase phase,
}
else if (pertrans->numSortCols == 0)
{
+ ListCell *arg;
+
/*
* Normal transition function without ORDER BY / DISTINCT.
*/
@@ -3113,6 +3112,7 @@ ExecBuildAggTrans(AggState *aggstate, AggStatePerPhase phase,
*/
Datum *values = pertrans->sortslot->tts_values;
bool *nulls = pertrans->sortslot->tts_isnull;
+ ListCell *arg;
strictnulls = nulls;
@@ -3152,12 +3152,12 @@ ExecBuildAggTrans(AggState *aggstate, AggStatePerPhase phase,
* grouping set). Do so for both sort and hash based computations, as
* applicable.
*/
- setoff = 0;
if (doSort)
{
int processGroupingSets = Max(phase->numsets, 1);
+ int setoff = 0;
- for (setno = 0; setno < processGroupingSets; setno++)
+ for (int setno = 0; setno < processGroupingSets; setno++)
{
ExecBuildAggTransCall(state, aggstate, &scratch, trans_fcinfo,
pertrans, transno, setno, setoff, false);
@@ -3168,6 +3168,7 @@ ExecBuildAggTrans(AggState *aggstate, AggStatePerPhase phase,
if (doHash)
{
int numHashes = aggstate->num_hashes;
+ int setoff;
/* in MIXED mode, there'll be preceding transition values */
if (aggstate->aggstrategy != AGG_HASHED)
@@ -3175,7 +3176,7 @@ ExecBuildAggTrans(AggState *aggstate, AggStatePerPhase phase,
else
setoff = 0;
- for (setno = 0; setno < numHashes; setno++)
+ for (int setno = 0; setno < numHashes; setno++)
{
ExecBuildAggTransCall(state, aggstate, &scratch, trans_fcinfo,
pertrans, transno, setno, setoff, true);
@@ -3204,6 +3205,8 @@ ExecBuildAggTrans(AggState *aggstate, AggStatePerPhase phase,
Assert(as->d.agg_deserialize.jumpnull == -1);
as->d.agg_deserialize.jumpnull = state->steps_len;
}
+ else
+ Assert(false);
}
}
@@ -3338,7 +3341,6 @@ ExecBuildGroupingEqual(TupleDesc ldesc, TupleDesc rdesc,
{
ExprState *state = makeNode(ExprState);
ExprEvalStep scratch = {0};
- int natt;
int maxatt = -1;
List *adjust_jumps = NIL;
ListCell *lc;
@@ -3358,7 +3360,7 @@ ExecBuildGroupingEqual(TupleDesc ldesc, TupleDesc rdesc,
scratch.resnull = &state->resnull;
/* compute max needed attribute */
- for (natt = 0; natt < numCols; natt++)
+ for (int natt = 0; natt < numCols; natt++)
{
int attno = keyColIdx[natt];
@@ -3388,7 +3390,7 @@ ExecBuildGroupingEqual(TupleDesc ldesc, TupleDesc rdesc,
* Start comparing at the last field (least significant sort key). That's
* the most likely to be different if we are dealing with sorted input.
*/
- for (natt = numCols; --natt >= 0;)
+ for (int natt = numCols; --natt >= 0;)
{
int attno = keyColIdx[natt];
Form_pg_attribute latt = TupleDescAttr(ldesc, attno - 1);