You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by GitBox <gi...@apache.org> on 2019/07/17 06:53:20 UTC

[GitHub] [incubator-druid] samarthjain opened a new issue #8093: SQL GroupBy query fails for aggregations returning complex type

samarthjain opened a new issue #8093: SQL GroupBy query fails for aggregations returning complex type
URL: https://github.com/apache/incubator-druid/issues/8093
 
 
   Please provide a detailed title (e.g. "Broker crashes when using TopN query with Bound filter" instead of just "Broker crashes").
   
   ### Affected Version
   
   master
   
   ### Description
   
   I have been working on adding SQL support for T-Digest sketches and ran into an issue for group by queries that project aggregations returning a complex type. 
   
   For ex - the below query fails for bloom filter aggregators. 
   `SELECT BLOOM_FILTER(l1, 1000) FROM numfoo group by dim2`
   
   `java.lang.RuntimeException: Error while applying rule DruidQueryRule(AGGREGATE_PROJECT), args [rel#26:LogicalProject.NONE.[](input=rel#25:Subset#3.NONE.[],EXPR$0=$1), rel#33:DruidQueryRel.NONE.[](query={"queryType":"groupBy","dataSource":{"type":"table","name":"numfoo"},"intervals":{"type":"intervals","intervals":["-146136543-09-08T08:23:32.096Z/146140482-04-24T15:36:27.903Z"]},"virtualColumns":[],"filter":null,"granularity":{"type":"all"},"dimensions":[{"type":"default","dimension":"dim2","outputName":"_d0","outputType":"STRING"}],"aggregations":[{"type":"bloom","name":"a0:agg","field":{"type":"default","dimension":"dim1","outputName":"a0:dim1","outputType":"STRING"},"maxNumEntries":1000}],"postAggregations":[],"having":null,"limitSpec":{"type":"NoopLimitSpec"},"context":{"defaultTimeout":300000,"maxScatterGatherBytes":9223372036854775807,"sqlCurrentTimestamp":"2000-01-01T00:00:00Z","sqlQueryId":"dummy"},"descending":false},signature={_d0:STRING, a0:agg:COMPLEX})]
   
   	at org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:236)
   	at org.apache.calcite.plan.volcano.VolcanoPlanner.findBestExp(VolcanoPlanner.java:646)
   	at org.apache.calcite.tools.Programs$RuleSetProgram.run(Programs.java:339)
   	at org.apache.calcite.tools.Programs$SequenceProgram.run(Programs.java:358)
   	at org.apache.calcite.prepare.PlannerImpl.transform(PlannerImpl.java:337)
   	at org.apache.druid.sql.calcite.planner.DruidPlanner.planWithDruidConvention(DruidPlanner.java:119)
   	at org.apache.druid.sql.calcite.planner.DruidPlanner.plan(DruidPlanner.java:89)
   	at org.apache.druid.sql.SqlLifecycle.plan(SqlLifecycle.java:141)
   	at org.apache.druid.sql.SqlLifecycle.planAndAuthorize(SqlLifecycle.java:207)
   	at org.apache.druid.sql.SqlLifecycle.runSimple(SqlLifecycle.java:244)
   	at org.apache.druid.query.aggregation.bloom.sql.BloomFilterSqlAggregatorTest.testBloomFilterAgg(BloomFilterSqlAggregatorTest.java:230)
   	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   	at java.lang.reflect.Method.invoke(Method.java:498)
   	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
   	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
   	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
   	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
   	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
   	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
   	at org.apache.druid.sql.calcite.util.QueryLogHook$1.evaluate(QueryLogHook.java:95)
   	at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
   	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
   	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
   	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
   	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
   	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
   	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
   	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
   	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
   	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
   	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
   	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
   	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
   	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
   	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
   	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
   	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
   	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
   Caused by: org.apache.druid.java.util.common.ISE: No ExprType for valueType[COMPLEX]
   	at org.apache.druid.sql.calcite.expression.Expressions.exprTypeForValueType(Expressions.java:576)
   	at org.apache.druid.sql.calcite.rel.Projection.postAggregatorDirectColumnIsOk(Projection.java:197)
   	at org.apache.druid.sql.calcite.rel.Projection.postAggregation(Projection.java:108)
   	at org.apache.druid.sql.calcite.rel.DruidQuery.computeGrouping(DruidQuery.java:313)
   	at org.apache.druid.sql.calcite.rel.DruidQuery.<init>(DruidQuery.java:167)
   	at org.apache.druid.sql.calcite.rel.PartialDruidQuery.build(PartialDruidQuery.java:306)
   	at org.apache.druid.sql.calcite.rel.DruidQueryRel.toDruidQuery(DruidQueryRel.java:97)
   	at org.apache.druid.sql.calcite.rel.DruidQueryRel.toDruidQueryForExplaining(DruidQueryRel.java:109)
   	at org.apache.druid.sql.calcite.rel.DruidRel.isValidDruidQuery(DruidRel.java:62)
   	at org.apache.druid.sql.calcite.rule.DruidRules$DruidQueryRule.onMatch(DruidRules.java:132)
   	at org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:212)
   	... 39 more`

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org