DRILL-1390: Hive query against an ES data source fails

Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/fab68158
Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/fab68158
Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/fab68158

Branch: refs/heads/master
Commit: fab6815899b32271f29e2541c8f414a207b15282
Parents: e4e22f7
Author: Aditya Kishore <adi...@maprtech.com>
Authored: Wed Sep 10 13:49:26 2014 -0700
Committer: Aditya Kishore <adi...@maprtech.com>
Committed: Thu Sep 11 19:25:27 2014 -0700

----------------------------------------------------------------------
 .../org/apache/drill/exec/store/hive/HiveScan.java     |  2 +-
 .../org/apache/drill/exec/store/hive/HiveSubScan.java  | 13 ++++++-------
 2 files changed, 7 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/fab68158/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveScan.java
----------------------------------------------------------------------
diff --git 
a/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveScan.java
 
b/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveScan.java
index d050467..c9569f9 100644
--- 
a/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveScan.java
+++ 
b/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveScan.java
@@ -216,7 +216,7 @@ public class HiveScan extends AbstractGroupScan {
       for (InputSplit split : splits) {
         parts.add(new HiveTable.HivePartition(partitionMap.get(split)));
         encodedInputSplits.add(serializeInputSplit(split));
-        splitTypes.add(split.getClass().getCanonicalName());
+        splitTypes.add(split.getClass().getName());
       }
       if (parts.contains(null)) parts = null;
       HiveReadEntry subEntry = new HiveReadEntry(hiveReadEntry.table, parts, 
hiveReadEntry.hiveConfigOverride);

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/fab68158/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveSubScan.java
----------------------------------------------------------------------
diff --git 
a/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveSubScan.java
 
b/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveSubScan.java
index c0e479a..1233202 100644
--- 
a/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveSubScan.java
+++ 
b/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveSubScan.java
@@ -18,6 +18,7 @@
 package org.apache.drill.exec.store.hive;
 
 import java.io.IOException;
+import java.lang.reflect.Constructor;
 import java.util.Iterator;
 import java.util.List;
 
@@ -29,10 +30,8 @@ import org.apache.drill.exec.physical.base.PhysicalOperator;
 import org.apache.drill.exec.physical.base.PhysicalVisitor;
 import org.apache.drill.exec.physical.base.SubScan;
 import org.apache.drill.exec.proto.UserBitShared.CoreOperatorType;
-import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hive.metastore.api.Partition;
 import org.apache.hadoop.hive.metastore.api.Table;
-import org.apache.hadoop.mapred.FileSplit;
 import org.apache.hadoop.mapred.InputSplit;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
@@ -108,12 +107,12 @@ public class HiveSubScan extends AbstractBase implements 
SubScan {
   }
 
   public static InputSplit deserializeInputSplit(String base64, String 
className) throws IOException, ReflectiveOperationException{
-    InputSplit split;
-    if (Class.forName(className) == FileSplit.class) {
-      split = new FileSplit((Path) null, 0, 0, (String[])null);
-    } else {
-      split = (InputSplit) 
Class.forName(className).getConstructor().newInstance();
+    Constructor<?> constructor = 
Class.forName(className).getDeclaredConstructor();
+    if (constructor == null) {
+      throw new ReflectiveOperationException("Class " + className + " does not 
implement a default constructor.");
     }
+    constructor.setAccessible(true);
+    InputSplit split = (InputSplit) constructor.newInstance();
     ByteArrayDataInput byteArrayDataInput = 
ByteStreams.newDataInput(Base64.decodeBase64(base64));
     split.readFields(byteArrayDataInput);
     return split;

Reply via email to