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/31 17:31:20 UTC

[GitHub] [incubator-druid] arhantpanda opened a new issue #8208: Druid SQL: ClassCastException: RelSubset cannot be cast to DruidRel

arhantpanda opened a new issue #8208: Druid SQL: ClassCastException: RelSubset cannot be cast to DruidRel
URL: https://github.com/apache/incubator-druid/issues/8208
 
 
   ### Affected Version
   0.15.0-incubating
   
   ### Description
   
   I've ingested an Avro stream and then trying to fetch only the latest records for a dimension (`countryIsoCode`).
   This is the SQL query (similar to the one for my datasource)
   ```
   select * from wikipedia 
   where CONCAT(countryIsoCode,'-',__time) in (
   select CONCAT(countryIsoCode,'-',MAX(__time)) t from wikipedia group by countryIsoCode
   )
   ```
   
   The above query executes with following stacktrace:
   ```
   2019-07-31T17:21:08,810 WARN [sql[59059122-d207-46aa-84e7-d35f3006106c]] org.apache.druid.sql.http.SqlResource - Failed to handle query: SqlQuery{query='SELECT * FROM (select * from wikipedia 
   where CONCAT(countryIsoCode,'-',__time) in (
   select CONCAT(countryIsoCode,'-',MAX(__time)) t from wikipedia group by countryIsoCode
   )) LIMIT 5000', resultFormat=ARRAY, header=true, context={}}
   java.lang.RuntimeException: Error while applying rule DruidSemiJoinRule, args [rel#43178:LogicalProject.NONE.[](input=rel#43171:Subset#11.NONE.[],__time=$0,added=$1,channel=$2,cityName=$3,comment=$4,countryIsoCode=$5,countryName=$6,deleted=$7,delta=$8,isAnonymous=$9,isMinor=$10,isNew=$11,isRobot=$12,isUnpatrolled=$13,metroCode=$14,namespace=$15,page=$16,regionIsoCode=$17,regionName=$18,user=$19), rel#43170:LogicalJoin.NONE.[](left=rel#43169:Subset#10.NONE.[],right=rel#43153:Subset#5.NONE.[],condition==($20, $21),joinType=inner), rel#43265:DruidQueryRel.NONE.[](query={"queryType":"scan","dataSource":{"type":"table","name":"wiki"},"intervals":{"type":"intervals","intervals":["-146136543-09-08T08:23:32.096Z/146140482-04-24T15:36:27.903Z"]},"virtualColumns":[{"type":"expression","name":"v0","expression":"concat(\"countryIsoCode\",'-',\"__time\")","outputType":"STRING"}],"resultFormat":"compactedList","batchSize":20480,"limit":9223372036854775807,"order":"none","filter":null,"columns":["__time","added","channel","cityName","comment","countryIsoCode","countryName","deleted","delta","isAnonymous","isMinor","isNew","isRobot","isUnpatrolled","metroCode","namespace","page","regionIsoCode","regionName","user","v0"],"legacy":false,"context":{"sqlQueryId":"59059122-d207-46aa-84e7-d35f3006106c"},"descending":false,"granularity":{"type":"all"}},signature={__time:LONG, added:LONG, channel:STRING, cityName:STRING, comment:STRING, countryIsoCode:STRING, countryName:STRING, deleted:LONG, delta:LONG, isAnonymous:STRING, isMinor:STRING, isNew:STRING, isRobot:STRING, isUnpatrolled:STRING, metroCode:LONG, namespace:STRING, page:STRING, regionIsoCode:STRING, regionName:STRING, user:STRING, v0:STRING}), rel#43214:DruidOuterQueryRel.NONE.[](innerQuery=rel#43151:Subset#4.NONE.[],query={"queryType":"groupBy","dataSource":{"type":"table","name":"__subquery__"},"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":"t","outputName":"d0","outputType":"STRING"}],"aggregations":[],"postAggregations":[],"having":null,"limitSpec":{"type":"NoopLimitSpec"},"context":{"sqlQueryId":"59059122-d207-46aa-84e7-d35f3006106c"},"descending":false},signature={d0:STRING})]
   	at org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:236) ~[calcite-core-1.17.0.jar:1.17.0]
   	at org.apache.calcite.plan.volcano.VolcanoPlanner.findBestExp(VolcanoPlanner.java:646) ~[calcite-core-1.17.0.jar:1.17.0]
   	at org.apache.calcite.tools.Programs$RuleSetProgram.run(Programs.java:339) ~[calcite-core-1.17.0.jar:1.17.0]
   	at org.apache.calcite.tools.Programs$SequenceProgram.run(Programs.java:358) ~[calcite-core-1.17.0.jar:1.17.0]
   	at org.apache.calcite.prepare.PlannerImpl.transform(PlannerImpl.java:337) ~[calcite-core-1.17.0.jar:1.17.0]
   	at org.apache.druid.sql.calcite.planner.DruidPlanner.planWithDruidConvention(DruidPlanner.java:119) ~[druid-sql-0.15.0-incubating.jar:0.15.0-incubating]
   	at org.apache.druid.sql.calcite.planner.DruidPlanner.plan(DruidPlanner.java:89) ~[druid-sql-0.15.0-incubating.jar:0.15.0-incubating]
   	at org.apache.druid.sql.SqlLifecycle.plan(SqlLifecycle.java:143) ~[druid-sql-0.15.0-incubating.jar:0.15.0-incubating]
   	at org.apache.druid.sql.SqlLifecycle.plan(SqlLifecycle.java:154) ~[druid-sql-0.15.0-incubating.jar:0.15.0-incubating]
   	at org.apache.druid.sql.SqlLifecycle.planAndAuthorize(SqlLifecycle.java:220) ~[druid-sql-0.15.0-incubating.jar:0.15.0-incubating]
   	at org.apache.druid.sql.http.SqlResource.doPost(SqlResource.java:91) [druid-sql-0.15.0-incubating.jar:0.15.0-incubating]
   	at sun.reflect.GeneratedMethodAccessor58.invoke(Unknown Source) ~[?:?]
   	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_191]
   	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_191]
   	at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) [jersey-server-1.19.3.jar:1.19.3]
   	at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) [jersey-server-1.19.3.jar:1.19.3]
   	at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) [jersey-server-1.19.3.jar:1.19.3]
   	at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) [jersey-server-1.19.3.jar:1.19.3]
   	at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) [jersey-server-1.19.3.jar:1.19.3]
   	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) [jersey-server-1.19.3.jar:1.19.3]
   	at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) [jersey-server-1.19.3.jar:1.19.3]
   	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) [jersey-server-1.19.3.jar:1.19.3]
   	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473) [jersey-server-1.19.3.jar:1.19.3]
   	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) [jersey-server-1.19.3.jar:1.19.3]
   	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) [jersey-server-1.19.3.jar:1.19.3]
   	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) [jersey-servlet-1.19.3.jar:1.19.3]
   	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) [jersey-servlet-1.19.3.jar:1.19.3]
   	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733) [jersey-servlet-1.19.3.jar:1.19.3]
   	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [javax.servlet-api-3.1.0.jar:3.1.0]
   	at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:286) [guice-servlet-4.1.0.jar:?]
   	at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:276) [guice-servlet-4.1.0.jar:?]
   	at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:181) [guice-servlet-4.1.0.jar:?]
   	at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) [guice-servlet-4.1.0.jar:?]
   	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85) [guice-servlet-4.1.0.jar:?]
   	at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:120) [guice-servlet-4.1.0.jar:?]
   	at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:135) [guice-servlet-4.1.0.jar:?]
   	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) [jetty-servlet-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.apache.druid.server.security.PreResponseAuthorizationCheckFilter.doFilter(PreResponseAuthorizationCheckFilter.java:82) [druid-server-0.15.0-incubating.jar:0.15.0-incubating]
   	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) [jetty-servlet-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.apache.druid.server.security.AllowOptionsResourceFilter.doFilter(AllowOptionsResourceFilter.java:75) [druid-server-0.15.0-incubating.jar:0.15.0-incubating]
   	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) [jetty-servlet-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.apache.druid.server.security.AllowAllAuthenticator$1.doFilter(AllowAllAuthenticator.java:84) [druid-server-0.15.0-incubating.jar:0.15.0-incubating]
   	at org.apache.druid.server.security.AuthenticationWrappingFilter.doFilter(AuthenticationWrappingFilter.java:59) [druid-server-0.15.0-incubating.jar:0.15.0-incubating]
   	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) [jetty-servlet-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.apache.druid.server.security.SecuritySanityCheckFilter.doFilter(SecuritySanityCheckFilter.java:86) [druid-server-0.15.0-incubating.jar:0.15.0-incubating]
   	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) [jetty-servlet-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533) [jetty-servlet-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) [jetty-servlet-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:724) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:61) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:169) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.server.Server.handle(Server.java:531) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) [jetty-io-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) [jetty-io-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) [jetty-io-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) [jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) [jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) [jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) [jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) [jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:760) [jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:678) [jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
   	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_191]
   Caused by: java.lang.ClassCastException: org.apache.calcite.plan.volcano.RelSubset cannot be cast to org.apache.druid.sql.calcite.rel.DruidRel
   	at org.apache.druid.sql.calcite.rel.DruidOuterQueryRel.getQueryCount(DruidOuterQueryRel.java:117) ~[druid-sql-0.15.0-incubating.jar:0.15.0-incubating]
   	at org.apache.druid.sql.calcite.rel.DruidSemiJoin.getQueryCount(DruidSemiJoin.java:186) ~[druid-sql-0.15.0-incubating.jar:0.15.0-incubating]
   	at org.apache.druid.sql.calcite.rule.DruidSemiJoinRule.onMatch(DruidSemiJoinRule.java:166) ~[druid-sql-0.15.0-incubating.jar:0.15.0-incubating]
   	at org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:212) ~[calcite-core-1.17.0.jar:1.17.0]
   	... 74 more
   ```
   I'm using `single-server/micro-quickstart` to startup Druid.
   
   What am I missing? How do I fix this?
   
   I'm open to any alternate queries that can achieve the same result.
   
   
   

----------------------------------------------------------------
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