Victoria Markman created DRILL-2523:
---------------------------------------
Summary: Correlated subquery with group by and count(<column
name>) throws unclear error
Key: DRILL-2523
URL: https://issues.apache.org/jira/browse/DRILL-2523
Project: Apache Drill
Issue Type: Bug
Components: Query Planning & Optimization
Affects Versions: 0.8.0
Reporter: Victoria Markman
Assignee: Jinfeng Ni
Correlated subquery: works, returns correct result
{code}
0: jdbc:drill:schema=dfs> select * from t2 where a2 not in ( select a1 from t1
where t2.b2 = t1.b1 );
+------------+------------+------------+
| a2 | b2 | c2 |
+------------+------------+------------+
| 0 | zzz | 2014-12-31 |
| 4 | ddddd | 2015-01-04 |
+------------+------------+------------+
2 rows selected (4.893 seconds)
{code}
count (\*) works
{code}
0: jdbc:drill:schema=dfs> select t2.c2, count(*) from t2 where a2 not in (
select a1 from t1 where t2.b2 = t1.b1 ) group by t2.c2 order by t2.c2;
+------------+------------+
| c2 | EXPR$1 |
+------------+------------+
| 2014-12-31 | 1 |
| 2015-01-04 | 1 |
+------------+------------+
2 rows selected (1.201 seconds)
{code}
count(<column name>) does not work and throws an error.
Postgres returns result in this case. I'm not sure what is wrong with this
query and error does not tell me anything ....
{code}
0: jdbc:drill:schema=dfs> select t2.c2, count(t2.b2) from t2 where a2 not in (
select a1 from t1 where t2.b2 = t1.b1 ) group by t2.c2 order by t2.c2;
Query failed: IllegalArgumentException: Target must be less than target count, 2
Error: exception while executing query: Failure while executing query.
(state=,code=0)
{code}
drillbit.log
{code}
2015-03-23 18:07:30,799 [2aefa99c-d961-f2c2-29a2-f2265d0b72a6:foreman] ERROR
o.a.drill.exec.work.foreman.Foreman - Error
7e9910d4-9302-4b2c-9463-689b67f15601: IllegalArgumentException: Target must be
less than target count, 2
org.apache.drill.exec.work.foreman.ForemanException: Unexpected exception
during fragment initialization: Target must be less than target count, 2
at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:211)
[drill-java-exec-0.8.0-SNAPSHOT-rebuffed.jar:0.8.0-SNAPSHOT]
at
org.apache.drill.common.SelfCleaningRunnable.run(SelfCleaningRunnable.java:38)
[drill-common-0.8.0-SNAPSHOT-rebuffed.jar:0.8.0-SNAPSHOT]
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.IllegalArgumentException: Target must be less than target
count, 2
at
org.eigenbase.util.mapping.Mappings$PartialFunctionImpl.set(Mappings.java:1374)
~[optiq-core-0.9-drill-r20.jar:na]
at org.eigenbase.util.mapping.Mappings.target(Mappings.java:266)
~[optiq-core-0.9-drill-r20.jar:na]
at
org.eigenbase.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:304)
~[optiq-core-0.9-drill-r20.jar:na]
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.util.ReflectUtil.invokeVisitorInternal(ReflectUtil.java:252)
~[optiq-core-0.9-drill-r20.jar:na]
at org.eigenbase.util.ReflectUtil.invokeVisitor(ReflectUtil.java:209)
~[optiq-core-0.9-drill-r20.jar:na]
at org.eigenbase.util.ReflectUtil$1.invokeVisitor(ReflectUtil.java:473)
~[optiq-core-0.9-drill-r20.jar:na]
at
org.eigenbase.sql2rel.RelDecorrelator$DecorrelateRelVisitor.visit(RelDecorrelator.java:1372)
~[optiq-core-0.9-drill-r20.jar:na]
at
org.eigenbase.sql2rel.RelDecorrelator.decorrelate(RelDecorrelator.java:135)
~[optiq-core-0.9-drill-r20.jar:na]
at
org.eigenbase.sql2rel.SqlToRelConverter.decorrelateQuery(SqlToRelConverter.java:2618)
~[optiq-core-0.9-drill-r20.jar:na]
at
org.eigenbase.sql2rel.SqlToRelConverter.decorrelate(SqlToRelConverter.java:363)
~[optiq-core-0.9-drill-r20.jar:na]
at
net.hydromatic.optiq.prepare.PlannerImpl.convert(PlannerImpl.java:189)
~[optiq-core-0.9-drill-r20.jar:na]
at
org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.convertToRel(DefaultSqlHandler.java:175)
~[drill-java-exec-0.8.0-SNAPSHOT-rebuffed.jar:0.8.0-SNAPSHOT]
at
org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.getPlan(DefaultSqlHandler.java:134)
~[drill-java-exec-0.8.0-SNAPSHOT-rebuffed.jar:0.8.0-SNAPSHOT]
at
org.apache.drill.exec.planner.sql.DrillSqlWorker.getPlan(DrillSqlWorker.java:145)
~[drill-java-exec-0.8.0-SNAPSHOT-rebuffed.jar:0.8.0-SNAPSHOT]
at org.apache.drill.exec.work.foreman.Foreman.runSQL(Foreman.java:735)
[drill-java-exec-0.8.0-SNAPSHOT-rebuffed.jar:0.8.0-SNAPSHOT]
at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:202)
[drill-java-exec-0.8.0-SNAPSHOT-rebuffed.jar:0.8.0-SNAPSHOT]
... 4 common frames omitted
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)