You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "slim bouguerra (JIRA)" <ji...@apache.org> on 2017/05/08 18:21:04 UTC

[jira] [Commented] (CALCITE-1775) Druid adapter: "GROUP BY ()" on empty relation should return 1 row

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

slim bouguerra commented on CALCITE-1775:
-----------------------------------------

[~julianhyde] this fixes the later issue https://github.com/apache/calcite/pull/444.
I am afraid the first issue needs more work, because we are instructing druid via the context to not fill empty buckets with 0.
I guess we can fix the always false filter and tackle the former in a different effort.   

> Druid adapter: "GROUP BY ()" on empty relation should return 1 row
> ------------------------------------------------------------------
>
>                 Key: CALCITE-1775
>                 URL: https://issues.apache.org/jira/browse/CALCITE-1775
>             Project: Calcite
>          Issue Type: Bug
>          Components: druid
>            Reporter: Julian Hyde
>            Assignee: Julian Hyde
>
> A "GROUP BY ()" query on an empty relation should return 1 row, but currently returns 0 rows. 
> Test case in {{DruidAdapterIT}}:
> {code}
>   @Test public void testSelectCountEmpty() {
>     sql("select count(*) as c from \"foodmart\" where \"product_id\" < 0")
>         .returnsUnordered("C=0");
>     sql("select count(*) as c from \"foodmart\" where 1 < 0")
>         .returnsUnordered("C=0");
>   }
> {code}
> Both queries should return one row. The first returns 0 rows; the second query throws
> {noformat}
> java.lang.AssertionError: cannot translate filter: false
> 	at org.apache.calcite.adapter.druid.DruidQuery$Translator.translateFilter(DruidQuery.java:1067)
> 	at org.apache.calcite.adapter.druid.DruidQuery$Translator.access$000(DruidQuery.java:933)
> 	at org.apache.calcite.adapter.druid.DruidQuery.getQuery(DruidQuery.java:497)
> 	at org.apache.calcite.adapter.druid.DruidQuery.deriveQuerySpec(DruidQuery.java:470)
> 	at org.apache.calcite.adapter.druid.DruidQuery.getQuerySpec(DruidQuery.java:414)
> 	at org.apache.calcite.adapter.druid.DruidQuery.deriveRowType(DruidQuery.java:308)
> 	at org.apache.calcite.rel.AbstractRelNode.getRowType(AbstractRelNode.java:224)
> 	at org.apache.calcite.plan.volcano.VolcanoPlanner.register(VolcanoPlanner.java:857)
> 	at org.apache.calcite.plan.volcano.VolcanoPlanner.ensureRegistered(VolcanoPlanner.java:883)
> 	at org.apache.calcite.plan.volcano.VolcanoPlanner.ensureRegistered(VolcanoPlanner.java:1769)
> 	at org.apache.calcite.plan.volcano.VolcanoRuleCall.transformTo(VolcanoRuleCall.java:135)
> 	at org.apache.calcite.plan.RelOptRuleCall.transformTo(RelOptRuleCall.java:225)
> 	at org.apache.calcite.adapter.druid.DruidRules$DruidFilterRule.onMatch(DruidRules.java:228)
> 	at org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:211)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)