Repository: hive
Updated Branches:
  refs/heads/branch-2 d9ed95677 -> 8ad07d03f


HIVE-17272: when hive.vectorized.execution.enabled is true, query on empty 
partitioned table fails with NPE (Aihua Xu, reviewed by Vihang Karajgaonkar)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/8ad07d03
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/8ad07d03
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/8ad07d03

Branch: refs/heads/branch-2
Commit: 8ad07d03f4282cd2f81940324f1470347f5d7c6f
Parents: d9ed956
Author: Aihua Xu <aihu...@apache.org>
Authored: Mon Aug 14 13:15:16 2017 -0700
Committer: Vihang Karajgaonkar <vih...@cloudera.com>
Committed: Tue Nov 7 15:13:32 2017 -0800

----------------------------------------------------------------------
 .../hive/ql/exec/vector/VectorMapOperator.java      |  7 +++++++
 .../queries/clientpositive/vectorized_parquet.q     |  3 +++
 .../clientpositive/llap/vectorized_parquet.q.out    | 16 ++++++++++++++++
 3 files changed, 26 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/8ad07d03/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java
index ed50df2..cfa5d98 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java
@@ -381,6 +381,9 @@ public class VectorMapOperator extends AbstractMapOperator {
           throws SerDeException, Exception {
 
     VectorPartitionDesc vectorPartDesc = partDesc.getVectorPartitionDesc();
+    if (vectorPartDesc == null) {
+      return null;
+    }
     VectorPartitionContext vectorPartitionContext;
     VectorMapOperatorReadType vectorMapOperatorReadType =
         vectorPartDesc.getVectorMapOperatorReadType();
@@ -607,6 +610,10 @@ public class VectorMapOperator extends AbstractMapOperator 
{
   private void setupPartitionContextVars(String nominalPath) throws 
HiveException {
 
     currentVectorPartContext = fileToPartitionContextMap.get(nominalPath);
+    if (currentVectorPartContext == null) {
+      return;
+    }
+
     PartitionDesc partDesc = currentVectorPartContext.getPartDesc();
     VectorPartitionDesc vectorPartDesc = partDesc.getVectorPartitionDesc();
     currentReadType = vectorPartDesc.getVectorMapOperatorReadType();

http://git-wip-us.apache.org/repos/asf/hive/blob/8ad07d03/ql/src/test/queries/clientpositive/vectorized_parquet.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/vectorized_parquet.q 
b/ql/src/test/queries/clientpositive/vectorized_parquet.q
index e6ebdaa..db02ec0 100644
--- a/ql/src/test/queries/clientpositive/vectorized_parquet.q
+++ b/ql/src/test/queries/clientpositive/vectorized_parquet.q
@@ -46,3 +46,6 @@ select ctinyint,
   stddev_pop(cdouble)
   from alltypes_parquet
   group by ctinyint;
+
+CREATE TABLE empty_parquet(x int) PARTITIONED BY (y int) stored as parquet;
+select * from empty_parquet t1 join empty_parquet t2 where t1.x=t2.x;

http://git-wip-us.apache.org/repos/asf/hive/blob/8ad07d03/ql/src/test/results/clientpositive/llap/vectorized_parquet.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vectorized_parquet.q.out 
b/ql/src/test/results/clientpositive/llap/vectorized_parquet.q.out
index 73d9784..274c6ce 100644
--- a/ql/src/test/results/clientpositive/llap/vectorized_parquet.q.out
+++ b/ql/src/test/results/clientpositive/llap/vectorized_parquet.q.out
@@ -346,3 +346,19 @@ NULL       1073418988      -16379  3115    NULL    
305051.4870777435
 60     626923679       -13606  23      60.0    8346.267436552042
 61     626923679       -15894  29      61.0    8785.714950987198
 62     626923679       -14307  17      62.0    9491.752726667326
+PREHOOK: query: CREATE TABLE empty_parquet(x int) PARTITIONED BY (y int) 
stored as parquet
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@empty_parquet
+POSTHOOK: query: CREATE TABLE empty_parquet(x int) PARTITIONED BY (y int) 
stored as parquet
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@empty_parquet
+PREHOOK: query: select * from empty_parquet t1 join empty_parquet t2 where 
t1.x=t2.x
+PREHOOK: type: QUERY
+PREHOOK: Input: default@empty_parquet
+#### A masked pattern was here ####
+POSTHOOK: query: select * from empty_parquet t1 join empty_parquet t2 where 
t1.x=t2.x
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@empty_parquet
+#### A masked pattern was here ####

Reply via email to