You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (JIRA)" <ji...@apache.org> on 2016/11/12 01:51:58 UTC

[jira] [Updated] (CALCITE-1489) Add rule, AggregateValuesRule, that applies to Aggregate on empty relation

     [ https://issues.apache.org/jira/browse/CALCITE-1489?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Julian Hyde updated CALCITE-1489:
---------------------------------
    Summary: Add rule, AggregateValuesRule, that applies to Aggregate on empty relation  (was: Add rule, AggegateValuesRule, that applies to Aggregate on empty relation)

> Add rule, AggregateValuesRule, that applies to Aggregate on empty relation
> --------------------------------------------------------------------------
>
>                 Key: CALCITE-1489
>                 URL: https://issues.apache.org/jira/browse/CALCITE-1489
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Julian Hyde
>            Assignee: Julian Hyde
>
> Add rule, AggegateValuesRule, that applies to Aggregate on empty relation. In CALCITE-1488, [~gian] wrote:
> {quote}
> I still have a problem with Aggregates that lack a group set, like SELECT COUNT\(\*\) FROM s.foo WHERE 1 = 0. PruneEmptyRules doesn't reduce that, since the result is going to be one row, not empty. The ValuesReduceRules don't either, because they don't touch Aggregates.
> I ended up addressing this with a rule on my end: https://gist.github.com/gianm/1c192a47a7ce284be8af986f97e6dd8f
> Does that approach make sense? If so do you think it makes sense to contribute to Calcite?
> One thing I'm not sure about is if there's a better way to figure out what should be 0 and what should be NULL other than hard-coding COUNT and SUM0.
> {quote}
> Let's call it {{AggregateValuesRule}}, consistent with the naming convention where we start with the type of rel(s) being acted on. Initially it would apply to an empty {{Values}}, but potentially it could apply to one or more values.
> I don't recall aggregates having a way to tell us what they will return on empty (or constant) input. In future we could use the constant reducer for that, but for now, the rule should match a particular set of aggregates: {{COUNT}} and {{SUM0}} return zero; {{MIN}}, {{MAX}}, {{SUM}} return null. It must abort if it sees an aggregate it does not know how to handle.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)