Khurram Faraaz created DRILL-4055:
-------------------------------------
Summary: Query over nested empty directory results in IOB Exception
Key: DRILL-4055
URL: https://issues.apache.org/jira/browse/DRILL-4055
Project: Apache Drill
Issue Type: Bug
Components: Execution - Flow
Affects Versions: 1.3.0
Environment: 4 node cluster CentOS
Reporter: Khurram Faraaz
SELECT * over a nested empty directory results in IOB Exception. We need a
better error message that states that the directory being queried is empty.
git.commit.id=3a73f098
{code}
0: jdbc:drill:schema=dfs.tmp> select * from `nested_dirs/data/parquet`;
Error: VALIDATION ERROR: Index: 0, Size: 0
[Error Id: 18b21dac-199d-4e5f-8a28-7c91723e1b63 on centos-04.qa.lab:31010]
(state=,code=0)
The below command does not return any results, which is expected since there
are no files in the directory, it is empty.
[root@centos-01 ~]# hadoop fs -ls /tmp/nested_dirs/data/parquet
[root@centos-01 ~]#
Stack trace from drillbit.log
org.apache.drill.common.exceptions.UserException: VALIDATION ERROR: Index: 0,
Size: 0
[Error Id: 18b21dac-199d-4e5f-8a28-7c91723e1b63 ]
at
org.apache.drill.common.exceptions.UserException$Builder.build(UserException.java:534)
~[drill-common-1.3.0.jar:1.3.0]
at
org.apache.drill.exec.planner.sql.DrillSqlWorker.getPlan(DrillSqlWorker.java:187)
[drill-java-exec-1.3.0.jar:1.3.0]
at org.apache.drill.exec.work.foreman.Foreman.runSQL(Foreman.java:905)
[drill-java-exec-1.3.0.jar:1.3.0]
at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:244)
[drill-java-exec-1.3.0.jar:1.3.0]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[na:1.7.0_85]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[na:1.7.0_85]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_85]
Caused by: org.apache.calcite.tools.ValidationException:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at
org.apache.calcite.prepare.PlannerImpl.validate(PlannerImpl.java:179)
~[calcite-core-1.4.0-drill-r8.jar:1.4.0-drill-r8]
at
org.apache.calcite.prepare.PlannerImpl.validateAndGetType(PlannerImpl.java:188)
~[calcite-core-1.4.0-drill-r8.jar:1.4.0-drill-r8]
at
org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.validateNode(DefaultSqlHandler.java:447)
~[drill-java-exec-1.3.0.jar:1.3.0]
at
org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.validateAndConvert(DefaultSqlHandler.java:190)
~[drill-java-exec-1.3.0.jar:1.3.0]
at
org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.getPlan(DefaultSqlHandler.java:159)
~[drill-java-exec-1.3.0.jar:1.3.0]
at
org.apache.drill.exec.planner.sql.DrillSqlWorker.getPlan(DrillSqlWorker.java:184)
[drill-java-exec-1.3.0.jar:1.3.0]
... 5 common frames omitted
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635) ~[na:1.7.0_85]
at java.util.ArrayList.get(ArrayList.java:411) ~[na:1.7.0_85]
at
org.apache.drill.exec.store.dfs.FileSelection.getFirstPath(FileSelection.java:126)
~[drill-java-exec-1.3.0.jar:1.3.0]
at
org.apache.drill.exec.store.dfs.BasicFormatMatcher.isReadable(BasicFormatMatcher.java:79)
~[drill-java-exec-1.3.0.jar:1.3.0]
at
org.apache.drill.exec.store.dfs.WorkspaceSchemaFactory$WorkspaceSchema.create(WorkspaceSchemaFactory.java:340)
~[drill-java-exec-1.3.0.jar:1.3.0]
at
org.apache.drill.exec.store.dfs.WorkspaceSchemaFactory$WorkspaceSchema.create(WorkspaceSchemaFactory.java:155)
~[drill-java-exec-1.3.0.jar:1.3.0]
at
org.apache.drill.exec.planner.sql.ExpandingConcurrentMap.getNewEntry(ExpandingConcurrentMap.java:96)
~[drill-java-exec-1.3.0.jar:1.3.0]
at
org.apache.drill.exec.planner.sql.ExpandingConcurrentMap.get(ExpandingConcurrentMap.java:90)
~[drill-java-exec-1.3.0.jar:1.3.0]
at
org.apache.drill.exec.store.dfs.WorkspaceSchemaFactory$WorkspaceSchema.getTable(WorkspaceSchemaFactory.java:278)
~[drill-java-exec-1.3.0.jar:1.3.0
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)