On Thu, Dec 22, 2022 at 2:02 PM Richard Guo <[email protected]> wrote:
> I happened to notice $subject. It happens when we build eqfunctions for
> each grouping set.
>
> /* for each grouping set */
> for (int k = 0; k < phasedata->numsets; k++)
> {
> int length = phasedata->gset_lengths[k];
>
> if (phasedata->eqfunctions[length - 1] != NULL)
> continue;
>
> phasedata->eqfunctions[length - 1] =
> execTuplesMatchPrepare(scanDesc,
> length,
> aggnode->grpColIdx,
> aggnode->grpOperators,
> aggnode->grpCollations,
> (PlanState *) aggstate);
> }
>
> If it is an empty grouping set, its length will be zero, and accessing
> phasedata->eqfunctions[length - 1] is not right.
>
> I think we can just skip building the eqfunctions for empty grouping
> set.
>
Attached is a trivial patch for the fix.
Thanks
Richard
v1-0001-Skip-building-eqfunctions-for-empty-grouping-set.patch
Description: Binary data
