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 ####