[ https://issues.apache.org/jira/browse/DRILL-2828?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sean Hsuan-Yi Chu updated DRILL-2828: ------------------------------------- Fix Version/s: (was: 1.2.0) 1.4.0 > Nested WHERE clause error on a HBase view > ----------------------------------------- > > Key: DRILL-2828 > URL: https://issues.apache.org/jira/browse/DRILL-2828 > Project: Apache Drill > Issue Type: Bug > Components: Query Planning & Optimization > Affects Versions: 0.8.0 > Reporter: Subhajit Ghosh > Assignee: Sean Hsuan-Yi Chu > Fix For: 1.4.0 > > > A RexInputRef error when using a nested WHERE clause (with DOT notation) > against a view. The following can be used to reproduce the error: > > create 'MyTable', 'main' > > put 'MyTable', 'id1', 'main:objectBytes', '{"foo":123,"prop":{"len":234}}' > In Drill: > {code} > > create or replace view MyTableView as select > convert_from(MyTable.main.objectBytes, 'JSON') json from hbase.MyTable; > > select v.json.prop.len as len from MyTableView v; > +------------+ > | len | > +------------+ > | 234 | > +------------+ > {code} > This produces the error: > {code} > > select v.json.prop.len as len from MyTableView v where v.json.prop.len > > 2; > Query failed: AssertionError: RexInputRef index 2 out of range 0..1 > {code} > Detailed error below. Please let me know if you need more information. > {code} > 2015-04-13 12:58:31,444 [2ad45097-c878-962c-b3be-288928a4bc79:foreman] INFO > o.a.d.e.s.hbase.TableStatsCalculator - Region size calculation disabled. > 2015-04-13 12:58:31,600 [2ad45097-c878-962c-b3be-288928a4bc79:foreman] INFO > o.a.drill.exec.work.foreman.Foreman - State change requested. PENDING --> > FAILED > org.apache.drill.exec.work.foreman.ForemanException: Unexpected exception > during fragment initialization: null > at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:213) > [drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > [na:1.7.0_71] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > [na:1.7.0_71] > at java.lang.Thread.run(Thread.java:745) [na:1.7.0_71] > Caused by: java.lang.reflect.UndeclaredThrowableException: null > at com.sun.proxy.$Proxy63.getRowCount(Unknown Source) ~[na:na] > at > org.eigenbase.rel.metadata.RelMetadataQuery.getRowCount(RelMetadataQuery.java:96) > ~[optiq-core-0.9-drill-r20.jar:na] > at org.eigenbase.rel.SingleRel.getRows(SingleRel.java:65) > ~[optiq-core-0.9-drill-r20.jar:na] > at > org.apache.drill.exec.planner.physical.visitor.ExcessiveExchangeIdentifier$MajorFragmentStat.add(ExcessiveExchangeIdentifier.java:99) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.physical.visitor.ExcessiveExchangeIdentifier.visitPrel(ExcessiveExchangeIdentifier.java:74) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.physical.visitor.ExcessiveExchangeIdentifier.visitPrel(ExcessiveExchangeIdentifier.java:31) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.physical.visitor.BasePrelVisitor.visitProject(BasePrelVisitor.java:48) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.physical.ProjectPrel.accept(ProjectPrel.java:69) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.physical.visitor.ExcessiveExchangeIdentifier.visitScreen(ExcessiveExchangeIdentifier.java:61) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.physical.visitor.ExcessiveExchangeIdentifier.visitScreen(ExcessiveExchangeIdentifier.java:31) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.physical.ScreenPrel.accept(ScreenPrel.java:64) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.physical.visitor.ExcessiveExchangeIdentifier.removeExcessiveEchanges(ExcessiveExchangeIdentifier.java:42) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.convertToPrel(DefaultSqlHandler.java:290) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.getPlan(DefaultSqlHandler.java:140) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.sql.DrillSqlWorker.getPlan(DrillSqlWorker.java:145) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at org.apache.drill.exec.work.foreman.Foreman.runSQL(Foreman.java:773) > [drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:204) > [drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > ... 3 common frames omitted > Caused by: java.lang.reflect.InvocationTargetException: null > at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source) ~[na:na] > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > ~[na:1.7.0_71] > at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_71] > at > org.eigenbase.rel.metadata.ReflectiveRelMetadataProvider$2$1.invoke(ReflectiveRelMetadataProvider.java:135) > ~[optiq-core-0.9-drill-r20.jar:na] > ... 20 common frames omitted > Caused by: java.lang.reflect.UndeclaredThrowableException: null > at com.sun.proxy.$Proxy65.getSelectivity(Unknown Source) ~[na:na] > at > org.eigenbase.rel.metadata.RelMetadataQuery.getSelectivity(RelMetadataQuery.java:218) > ~[optiq-core-0.9-drill-r20.jar:na] > at > org.eigenbase.rel.metadata.RelMdRowCount.getRowCount(RelMdRowCount.java:54) > ~[optiq-core-0.9-drill-r20.jar:na] > ... 24 common frames omitted > Caused by: java.lang.reflect.InvocationTargetException: null > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > ~[na:1.7.0_71] > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > ~[na:1.7.0_71] > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > ~[na:1.7.0_71] > at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_71] > at > org.eigenbase.rel.metadata.ReflectiveRelMetadataProvider$2$1.invoke(ReflectiveRelMetadataProvider.java:135) > ~[optiq-core-0.9-drill-r20.jar:na] > ... 27 common frames omitted > Caused by: java.lang.reflect.UndeclaredThrowableException: null > at com.sun.proxy.$Proxy65.getSelectivity(Unknown Source) ~[na:na] > at > org.eigenbase.rel.metadata.RelMetadataQuery.getSelectivity(RelMetadataQuery.java:218) > ~[optiq-core-0.9-drill-r20.jar:na] > at > org.eigenbase.rel.metadata.RelMdSelectivity.getSelectivity(RelMdSelectivity.java:168) > ~[optiq-core-0.9-drill-r20.jar:na] > ... 32 common frames omitted > Caused by: java.lang.reflect.InvocationTargetException: null > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > ~[na:1.7.0_71] > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > ~[na:1.7.0_71] > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > ~[na:1.7.0_71] > at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_71] > at > org.eigenbase.rel.metadata.ReflectiveRelMetadataProvider$2$1.invoke(ReflectiveRelMetadataProvider.java:135) > ~[optiq-core-0.9-drill-r20.jar:na] > ... 35 common frames omitted > Caused by: java.lang.AssertionError: RexInputRef index 2 out of range 0..1 > at > org.eigenbase.rex.RexProgramBuilder$RegisterInputShuttle.visitInputRef(RexProgramBuilder.java:891) > ~[optiq-core-0.9-drill-r20.jar:na] > at > org.eigenbase.rex.RexProgramBuilder$RegisterInputShuttle.visitInputRef(RexProgramBuilder.java:878) > ~[optiq-core-0.9-drill-r20.jar:na] > at org.eigenbase.rex.RexInputRef.accept(RexInputRef.java:103) > ~[optiq-core-0.9-drill-r20.jar:na] > at > org.eigenbase.rex.RexProgramBuilder.registerInput(RexProgramBuilder.java:271) > ~[optiq-core-0.9-drill-r20.jar:na] > at > org.eigenbase.rex.RexProgramBuilder.addProject(RexProgramBuilder.java:184) > ~[optiq-core-0.9-drill-r20.jar:na] > at > org.eigenbase.rex.RexProgramBuilder.addIdentity(RexProgramBuilder.java:801) > ~[optiq-core-0.9-drill-r20.jar:na] > at > org.eigenbase.relopt.RelOptUtil.pushFilterPastProject(RelOptUtil.java:2178) > ~[optiq-core-0.9-drill-r20.jar:na] > at > org.eigenbase.rel.metadata.RelMdSelectivity.getSelectivity(RelMdSelectivity.java:166) > ~[optiq-core-0.9-drill-r20.jar:na] > ... 40 common frames omitted > 2015-04-13 12:58:31,609 [2ad45097-c878-962c-b3be-288928a4bc79:foreman] INFO > o.a.drill.exec.work.foreman.Foreman - foreman cleaning up - status: [] > 2015-04-13 12:58:31,612 [2ad45097-c878-962c-b3be-288928a4bc79:foreman] > ERROR o.a.drill.exec.work.foreman.Foreman - Error > aeed96ec-2c1f-4778-bc02-635787d717ae: AssertionError: RexInputRef index 2 > out of range 0..1 > org.apache.drill.exec.work.foreman.ForemanException: Unexpected exception > during fragment initialization: null > at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:213) > [drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > [na:1.7.0_71] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > [na:1.7.0_71] > at java.lang.Thread.run(Thread.java:745) [na:1.7.0_71] > Caused by: java.lang.reflect.UndeclaredThrowableException: null > at com.sun.proxy.$Proxy63.getRowCount(Unknown Source) ~[na:na] > at > org.eigenbase.rel.metadata.RelMetadataQuery.getRowCount(RelMetadataQuery.java:96) > ~[optiq-core-0.9-drill-r20.jar:na] > at org.eigenbase.rel.SingleRel.getRows(SingleRel.java:65) > ~[optiq-core-0.9-drill-r20.jar:na] > at > org.apache.drill.exec.planner.physical.visitor.ExcessiveExchangeIdentifier$MajorFragmentStat.add(ExcessiveExchangeIdentifier.java:99) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.physical.visitor.ExcessiveExchangeIdentifier.visitPrel(ExcessiveExchangeIdentifier.java:74) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.physical.visitor.ExcessiveExchangeIdentifier.visitPrel(ExcessiveExchangeIdentifier.java:31) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.physical.visitor.BasePrelVisitor.visitProject(BasePrelVisitor.java:48) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.physical.ProjectPrel.accept(ProjectPrel.java:69) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.physical.visitor.ExcessiveExchangeIdentifier.visitScreen(ExcessiveExchangeIdentifier.java:61) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.physical.visitor.ExcessiveExchangeIdentifier.visitScreen(ExcessiveExchangeIdentifier.java:31) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.physical.ScreenPrel.accept(ScreenPrel.java:64) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.physical.visitor.ExcessiveExchangeIdentifier.removeExcessiveEchanges(ExcessiveExchangeIdentifier.java:42) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.convertToPrel(DefaultSqlHandler.java:290) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.getPlan(DefaultSqlHandler.java:140) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at > org.apache.drill.exec.planner.sql.DrillSqlWorker.getPlan(DrillSqlWorker.java:145) > ~[drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at org.apache.drill.exec.work.foreman.Foreman.runSQL(Foreman.java:773) > [drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:204) > [drill-java-exec-0.8.0-rebuffed.jar:0.8.0] > ... 3 common frames omitted > Caused by: java.lang.reflect.InvocationTargetException: null > at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source) ~[na:na] > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > ~[na:1.7.0_71] > at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_71] > at > org.eigenbase.rel.metadata.ReflectiveRelMetadataProvider$2$1.invoke(ReflectiveRelMetadataProvider.java:135) > ~[optiq-core-0.9-drill-r20.jar:na] > ... 20 common frames omitted > Caused by: java.lang.reflect.UndeclaredThrowableException: null > at com.sun.proxy.$Proxy65.getSelectivity(Unknown Source) ~[na:na] > at > org.eigenbase.rel.metadata.RelMetadataQuery.getSelectivity(RelMetadataQuery.java:218) > ~[optiq-core-0.9-drill-r20.jar:na] > at > org.eigenbase.rel.metadata.RelMdRowCount.getRowCount(RelMdRowCount.java:54) > ~[optiq-core-0.9-drill-r20.jar:na] > ... 24 common frames omitted > Caused by: java.lang.reflect.InvocationTargetException: null > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > ~[na:1.7.0_71] > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > ~[na:1.7.0_71] > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > ~[na:1.7.0_71] > at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_71] > at > org.eigenbase.rel.metadata.ReflectiveRelMetadataProvider$2$1.invoke(ReflectiveRelMetadataProvider.java:135) > ~[optiq-core-0.9-drill-r20.jar:na] > ... 27 common frames omitted > Caused by: java.lang.reflect.UndeclaredThrowableException: null > at com.sun.proxy.$Proxy65.getSelectivity(Unknown Source) ~[na:na] > at > org.eigenbase.rel.metadata.RelMetadataQuery.getSelectivity(RelMetadataQuery.java:218) > ~[optiq-core-0.9-drill-r20.jar:na] > at > org.eigenbase.rel.metadata.RelMdSelectivity.getSelectivity(RelMdSelectivity.java:168) > ~[optiq-core-0.9-drill-r20.jar:na] > ... 32 common frames omitted > Caused by: java.lang.reflect.InvocationTargetException: null > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > ~[na:1.7.0_71] > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > ~[na:1.7.0_71] > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > ~[na:1.7.0_71] > at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_71] > at > org.eigenbase.rel.metadata.ReflectiveRelMetadataProvider$2$1.invoke(ReflectiveRelMetadataProvider.java:135) > ~[optiq-core-0.9-drill-r20.jar:na] > ... 35 common frames omitted > Caused by: java.lang.AssertionError: RexInputRef index 2 out of range 0..1 > at > org.eigenbase.rex.RexProgramBuilder$RegisterInputShuttle.visitInputRef(RexProgramBuilder.java:891) > ~[optiq-core-0.9-drill-r20.jar:na] > at > org.eigenbase.rex.RexProgramBuilder$RegisterInputShuttle.visitInputRef(RexProgramBuilder.java:878) > ~[optiq-core-0.9-drill-r20.jar:na] > at org.eigenbase.rex.RexInputRef.accept(RexInputRef.java:103) > ~[optiq-core-0.9-drill-r20.jar:na] > at > org.eigenbase.rex.RexProgramBuilder.registerInput(RexProgramBuilder.java:271) > ~[optiq-core-0.9-drill-r20.jar:na] > at > org.eigenbase.rex.RexProgramBuilder.addProject(RexProgramBuilder.java:184) > ~[optiq-core-0.9-drill-r20.jar:na] > at > org.eigenbase.rex.RexProgramBuilder.addIdentity(RexProgramBuilder.java:801) > ~[optiq-core-0.9-drill-r20.jar:na] > at > org.eigenbase.relopt.RelOptUtil.pushFilterPastProject(RelOptUtil.java:2178) > ~[optiq-core-0.9-drill-r20.jar:na] > at > org.eigenbase.rel.metadata.RelMdSelectivity.getSelectivity(RelMdSelectivity.java:166) > ~[optiq-core-0.9-drill-r20.jar:na] > ... 40 common frames omitted > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)