Commit c080b223 authored by Tom Lane's avatar Tom Lane

Fix minor oversights in nodeAgg.c.

aggstate->evalproj is always set up by ExecInitAgg, so there's no
need to test.  Doing so led Coverity to think that we might be
intending "slot" to be possibly NULL here, and it quite properly
complained that the rest of combine_aggregates() wasn't prepared
for that.

Also fix a couple of obvious thinkos in Asserts checking that
"inputoff" isn't past the end of the slot.

Errors introduced in commit 8ed3f11b, so no need for back-patch.
parent 7d41a2bd
......@@ -932,7 +932,8 @@ advance_aggregates(AggState *aggstate, AggStatePerGroup pergroup)
/* Load values into fcinfo */
/* Start from 1, since the 0th arg will be the transition value */
Assert(slot->tts_nvalid >= numTransInputs);
Assert(slot->tts_nvalid >= (numTransInputs + inputoff));
for (i = 0; i < numTransInputs; i++)
{
fcinfo->arg[i + 1] = slot->tts_values[i + inputoff];
......@@ -963,13 +964,12 @@ combine_aggregates(AggState *aggstate, AggStatePerGroup pergroup)
{
int transno;
int numTrans = aggstate->numtrans;
TupleTableSlot *slot = NULL;
TupleTableSlot *slot;
/* combine not supported with grouping sets */
Assert(aggstate->phase->numsets == 0);
/* compute input for all aggregates */
if (aggstate->evalproj)
slot = ExecProject(aggstate->evalproj, NULL);
for (transno = 0; transno < numTrans; transno++)
......@@ -979,8 +979,7 @@ combine_aggregates(AggState *aggstate, AggStatePerGroup pergroup)
FunctionCallInfo fcinfo = &pertrans->transfn_fcinfo;
int inputoff = pertrans->inputoff;
Assert(slot->tts_nvalid >= 1);
Assert(slot->tts_nvalid + inputoff >= 1);
Assert(slot->tts_nvalid > inputoff);
/*
* deserialfn_oid will be set if we must deserialize the input state
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment