[
https://issues.apache.org/jira/browse/DRILL-2870?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14515846#comment-14515846
]
Julian Hyde edited comment on DRILL-2870 at 4/27/15 11:30 PM:
--------------------------------------------------------------
For this case, Calcite wraps the aggregate function in a {{CASE COUNT( * ) WHEN
0 THEN NULL ELSE ... END}} call. Thus you get the efficiency of a not-null
accumulator.
was (Author: julianhyde):
For this case, Calcite wraps the aggregate function in a {{CASE COUNT(*) WHEN 0
THEN NULL ELSE ... END}} call. Thus you get the efficiency of a not-null
accumulator.
> Fix return type of aggregate functions to be nullable
> -----------------------------------------------------
>
> Key: DRILL-2870
> URL: https://issues.apache.org/jira/browse/DRILL-2870
> Project: Apache Drill
> Issue Type: Bug
> Reporter: Mehant Baid
> Assignee: Mehant Baid
> Priority: Critical
> Fix For: 1.0.0
>
>
> The output type of aggregate functions is required if the input is required
> which does not always hold true. Consider the case where input is a required
> type and we are performing sum(), however if all the rows are filtered out
> then we should return null instead of 0. This holds true for all aggregate
> functions (except count).
> As part of DRILL-2277 we are fixing the case when we have an aggregate
> function (without group by) and the input batch is empty we still need to
> produce one record with null as output (count function is an exception to
> this). If we don't fix the return type of aggregate functions then we will
> return wrong results in the case where we have an empty input with required
> columns.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)