You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Muhammad Gelbana (JIRA)" <ji...@apache.org> on 2018/06/01 12:32:00 UTC

[jira] [Commented] (CALCITE-1436) AggregateNode NPE for aggregators other than SUM/COUNT

    [ https://issues.apache.org/jira/browse/CALCITE-1436?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16497927#comment-16497927 ] 

Muhammad Gelbana commented on CALCITE-1436:
-------------------------------------------

Would someone please shed some light on what needs to be done here ? I believe [~vladimirsitnikov]\[~vlsi] is the author of [this change|[https://github.com/apache/calcite/commit/ddad58826121d29362539f240ea32660811dc09b#diff-964b02bd21a99d18828586e07bb88aa7].] Would you please provide more information ?

I can think of two ways to fix this. I either create an accumulator following the same interface as IntSum, LongSum and DoubleSum and
{code:java}
return new UdaAccumulatorFactory(AggregateFunctionImpl.create(IntMin.class), call, true); // That's for Integral input{code}
Just as what the SUM branch does.

Or,

Considering that I'm trying to support MIN and MAX aggregate functions, I'll have to initialize the *state* list with only one element that represents the calculated minimum\maximum value. Should this expression be of type ParameterExpression ? This will have to be done in the AggImpState constructor of course. But this is still complicated to me, I appreciate some clarifications please.

 

> AggregateNode NPE for aggregators other than SUM/COUNT
> ------------------------------------------------------
>
>                 Key: CALCITE-1436
>                 URL: https://issues.apache.org/jira/browse/CALCITE-1436
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>            Reporter: Gian Merlino
>            Assignee: Julian Hyde
>            Priority: Major
>
> AggregateNode.getAccumulator does this for any aggregation other than COUNT or SUM:
>       final AggImpState agg = new AggImpState(0, call, false);
>       int stateSize = agg.state.size();
> This NPEs because "state" is null on freshly created AggImpState instances.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)