Venki Korukanti created DRILL-3746:
--------------------------------------

             Summary: Hive partition pruning fails if the table contains 
external partitions
                 Key: DRILL-3746
                 URL: https://issues.apache.org/jira/browse/DRILL-3746
             Project: Apache Drill
          Issue Type: Bug
            Reporter: Venki Korukanti


If Hive contains a table which has external partitions, Drill fails in 
partition pruning code, which causes the query to fail.

{code}
CREATE TABLE external_partition_test (boolean_field BOOLEAN) PARTITIONED BY 
(boolean_part BOOLEAN);

ALTER TABLE external_partition_test ADD PARTITION (boolean_part='true') 
LOCATION '/some/path';

ALTER TABLE external_partition_test ADD PARTITION (boolean_part='false') 
LOCATION '/some/path';
{code}

Exception:
{code}


java.lang.StringIndexOutOfBoundsException

String index out of range: -14

at java.lang.String.substring(String.java:1875) ~[na:1.7.0_45]

at 
org.apache.drill.exec.planner.sql.HivePartitionLocation.<init>(HivePartitionLocation.java:31)
 ~[classes/:na]

at 
org.apache.drill.exec.planner.sql.HivePartitionDescriptor.getPartitions(HivePartitionDescriptor.java:117)
 ~[classes/:na]

at 
org.apache.drill.exec.planner.logical.partition.PruneScanRule.doOnMatch(PruneScanRule.java:185)
 ~[classes/:na]

at 
org.apache.drill.exec.planner.sql.logical.HivePushPartitionFilterIntoScan$2.onMatch(HivePushPartitionFilterIntoScan.java:92)
 ~[classes/:na]

at 
org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:228)
 ~[calcite-core-1.4.0-drill-r0.jar:1.4.0-drill-r0]
{code}

Looking at the {{HivePartitionLocation}}, it looks like we are depending on the 
structure of the files on FileSystem to get the partition values. We should get 
these partition from MetaStore.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to