You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by pr...@apache.org on 2015/05/07 03:21:00 UTC
[06/52] [abbrv] hive git commit: HIVE-10520: LLAP: Must reset small
table result columns for Native Vectorization of Map Join (Matt McCline via
Jason Dere)
HIVE-10520: LLAP: Must reset small table result columns for Native Vectorization of Map Join (Matt McCline via Jason Dere)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/61176b10
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/61176b10
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/61176b10
Branch: refs/heads/llap
Commit: 61176b10cfdd1a50cbab12c4913622d8941606a8
Parents: c72d073
Author: Jason Dere <jd...@hortonworks.com>
Authored: Fri May 1 11:24:49 2015 -0700
Committer: Jason Dere <jd...@hortonworks.com>
Committed: Fri May 1 11:24:49 2015 -0700
----------------------------------------------------------------------
.../mapjoin/VectorMapJoinCommonOperator.java | 7 +++++
.../VectorMapJoinGenerateResultOperator.java | 4 +--
.../VectorMapJoinInnerBigOnlyLongOperator.java | 5 ++++
...ctorMapJoinInnerBigOnlyMultiKeyOperator.java | 5 ++++
...VectorMapJoinInnerBigOnlyStringOperator.java | 5 ++++
...ectorMapJoinInnerGenerateResultOperator.java | 15 ++++++++++
.../mapjoin/VectorMapJoinInnerLongOperator.java | 4 +++
.../VectorMapJoinInnerMultiKeyOperator.java | 4 +++
.../VectorMapJoinInnerStringOperator.java | 4 +++
.../VectorMapJoinLeftSemiLongOperator.java | 5 ++++
.../VectorMapJoinLeftSemiMultiKeyOperator.java | 5 ++++
.../VectorMapJoinLeftSemiStringOperator.java | 5 ++++
...ectorMapJoinOuterGenerateResultOperator.java | 31 ++++++++++++++++----
.../mapjoin/VectorMapJoinOuterLongOperator.java | 4 +++
.../VectorMapJoinOuterMultiKeyOperator.java | 4 +++
.../VectorMapJoinOuterStringOperator.java | 4 +++
16 files changed, 103 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/61176b10/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinCommonOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinCommonOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinCommonOperator.java
index f9d5736..b215f70 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinCommonOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinCommonOperator.java
@@ -132,6 +132,10 @@ public abstract class VectorMapJoinCommonOperator extends MapJoinOperator implem
// to output batch scratch columns for the small table portion.
protected VectorColumnSourceMapping smallTableMapping;
+ // These are the output columns for the small table and the outer small table keys.
+ protected int[] smallTableOutputVectorColumns;
+ protected int[] bigTableOuterKeyOutputVectorColumns;
+
// These are the columns in the big and small table that are ByteColumnVector columns.
// We create data buffers for these columns so we can copy strings into those columns by value.
protected int[] bigTableByteColumnVectorColumns;
@@ -415,6 +419,9 @@ public abstract class VectorMapJoinCommonOperator extends MapJoinOperator implem
smallTableMapping.finalize();
+ bigTableOuterKeyOutputVectorColumns = bigTableOuterKeyMapping.getOutputColumns();
+ smallTableOutputVectorColumns = smallTableMapping.getOutputColumns();
+
// Which big table and small table columns are ByteColumnVector and need have their data buffer
// to be manually reset for some join result processing?
http://git-wip-us.apache.org/repos/asf/hive/blob/61176b10/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinGenerateResultOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinGenerateResultOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinGenerateResultOperator.java
index 70c8cb1..0f1c7a8 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinGenerateResultOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinGenerateResultOperator.java
@@ -331,7 +331,7 @@ public abstract class VectorMapJoinGenerateResultOperator extends VectorMapJoinC
}
if (bigTableVectorCopyOuterKeys != null) {
bigTableVectorCopyOuterKeys.copyByReference(batch, batchIndex, overflowBatch, 0);
- for (int column : bigTableOuterKeyMapping.getOutputColumns()) {
+ for (int column : bigTableOuterKeyOutputVectorColumns) {
overflowBatch.cols[column].isRepeating = true;
}
}
@@ -347,7 +347,7 @@ public abstract class VectorMapJoinGenerateResultOperator extends VectorMapJoinC
}
if (bigTableVectorCopyOuterKeys != null) {
- for (int column : bigTableOuterKeyMapping.getOutputColumns()) {
+ for (int column : bigTableOuterKeyOutputVectorColumns) {
ColumnVector colVector = overflowBatch.cols[column];
colVector.reset();
}
http://git-wip-us.apache.org/repos/asf/hive/blob/61176b10/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyLongOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyLongOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyLongOperator.java
index 2173829..53a91d8 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyLongOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyLongOperator.java
@@ -125,6 +125,11 @@ public class VectorMapJoinInnerBigOnlyLongOperator extends VectorMapJoinInnerBig
batchCounter++;
+ // Do the per-batch setup for an inner big-only join.
+
+ // (Currently none)
+ // innerBigOnlyPerBatchSetup(batch);
+
// For inner joins, we may apply the filter(s) now.
for(VectorExpression ve : bigTableFilterExpressions) {
ve.evaluate(batch);
http://git-wip-us.apache.org/repos/asf/hive/blob/61176b10/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyMultiKeyOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyMultiKeyOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyMultiKeyOperator.java
index ab6c17e..9553fa0 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyMultiKeyOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyMultiKeyOperator.java
@@ -130,6 +130,11 @@ public class VectorMapJoinInnerBigOnlyMultiKeyOperator extends VectorMapJoinInne
batchCounter++;
+ // Do the per-batch setup for an inner big-only join.
+
+ // (Currently none)
+ // innerBigOnlyPerBatchSetup(batch);
+
// For inner joins, we may apply the filter(s) now.
for(VectorExpression ve : bigTableFilterExpressions) {
ve.evaluate(batch);
http://git-wip-us.apache.org/repos/asf/hive/blob/61176b10/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyStringOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyStringOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyStringOperator.java
index 0b725aa..17d0b63 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyStringOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyStringOperator.java
@@ -116,6 +116,11 @@ public class VectorMapJoinInnerBigOnlyStringOperator extends VectorMapJoinInnerB
batchCounter++;
+ // Do the per-batch setup for an inner big-only join.
+
+ // (Currently none)
+ // innerBigOnlyPerBatchSetup(batch);
+
// For inner joins, we may apply the filter(s) now.
for(VectorExpression ve : bigTableFilterExpressions) {
ve.evaluate(batch);
http://git-wip-us.apache.org/repos/asf/hive/blob/61176b10/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerGenerateResultOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerGenerateResultOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerGenerateResultOperator.java
index a7eb454..3a5e4b2 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerGenerateResultOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerGenerateResultOperator.java
@@ -23,6 +23,7 @@ import java.io.IOException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hive.ql.exec.JoinUtil;
+import org.apache.hadoop.hive.ql.exec.vector.ColumnVector;
import org.apache.hadoop.hive.ql.exec.vector.VectorizationContext;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
@@ -127,6 +128,20 @@ public abstract class VectorMapJoinInnerGenerateResultOperator
*/
/**
+ * Do the per-batch setup for an inner join.
+ */
+ protected void innerPerBatchSetup(VectorizedRowBatch batch) {
+
+ // For join operators that can generate small table results, reset their
+ // (target) scratch columns.
+
+ for (int column : smallTableOutputVectorColumns) {
+ ColumnVector smallTableColumn = batch.cols[column];
+ smallTableColumn.reset();
+ }
+ }
+
+ /**
* Generate the inner join output results for one vectorized row batch.
*
* @param batch
http://git-wip-us.apache.org/repos/asf/hive/blob/61176b10/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerLongOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerLongOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerLongOperator.java
index c998252..b77a93c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerLongOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerLongOperator.java
@@ -124,6 +124,10 @@ public class VectorMapJoinInnerLongOperator extends VectorMapJoinInnerGenerateRe
batchCounter++;
+ // Do the per-batch setup for an inner join.
+
+ innerPerBatchSetup(batch);
+
// For inner joins, we may apply the filter(s) now.
for(VectorExpression ve : bigTableFilterExpressions) {
ve.evaluate(batch);
http://git-wip-us.apache.org/repos/asf/hive/blob/61176b10/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerMultiKeyOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerMultiKeyOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerMultiKeyOperator.java
index e426476..938506b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerMultiKeyOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerMultiKeyOperator.java
@@ -128,6 +128,10 @@ public class VectorMapJoinInnerMultiKeyOperator extends VectorMapJoinInnerGenera
batchCounter++;
+ // Do the per-batch setup for an inner join.
+
+ innerPerBatchSetup(batch);
+
// For inner joins, we may apply the filter(s) now.
for(VectorExpression ve : bigTableFilterExpressions) {
ve.evaluate(batch);
http://git-wip-us.apache.org/repos/asf/hive/blob/61176b10/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerStringOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerStringOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerStringOperator.java
index 3bc225a..f7dd8e2 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerStringOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerStringOperator.java
@@ -115,6 +115,10 @@ public class VectorMapJoinInnerStringOperator extends VectorMapJoinInnerGenerate
batchCounter++;
+ // Do the per-batch setup for an inner join.
+
+ innerPerBatchSetup(batch);
+
// For inner joins, we may apply the filter(s) now.
for(VectorExpression ve : bigTableFilterExpressions) {
ve.evaluate(batch);
http://git-wip-us.apache.org/repos/asf/hive/blob/61176b10/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiLongOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiLongOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiLongOperator.java
index dd614da..75aeefb 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiLongOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiLongOperator.java
@@ -125,6 +125,11 @@ public class VectorMapJoinLeftSemiLongOperator extends VectorMapJoinLeftSemiGene
batchCounter++;
+ // Do the per-batch setup for an left semi join.
+
+ // (Currently none)
+ // leftSemiPerBatchSetup(batch);
+
// For left semi joins, we may apply the filter(s) now.
for(VectorExpression ve : bigTableFilterExpressions) {
ve.evaluate(batch);
http://git-wip-us.apache.org/repos/asf/hive/blob/61176b10/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiMultiKeyOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiMultiKeyOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiMultiKeyOperator.java
index cf4f312..ea287f4 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiMultiKeyOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiMultiKeyOperator.java
@@ -129,6 +129,11 @@ public class VectorMapJoinLeftSemiMultiKeyOperator extends VectorMapJoinLeftSemi
batchCounter++;
+ // Do the per-batch setup for an left semi join.
+
+ // (Currently none)
+ // leftSemiPerBatchSetup(batch);
+
// For left semi joins, we may apply the filter(s) now.
for(VectorExpression ve : bigTableFilterExpressions) {
ve.evaluate(batch);
http://git-wip-us.apache.org/repos/asf/hive/blob/61176b10/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiStringOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiStringOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiStringOperator.java
index 12d663c..116cb81 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiStringOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiStringOperator.java
@@ -116,6 +116,11 @@ public class VectorMapJoinLeftSemiStringOperator extends VectorMapJoinLeftSemiGe
batchCounter++;
+ // Do the per-batch setup for an left semi join.
+
+ // (Currently none)
+ // leftSemiPerBatchSetup(batch);
+
// For left semi joins, we may apply the filter(s) now.
for(VectorExpression ve : bigTableFilterExpressions) {
ve.evaluate(batch);
http://git-wip-us.apache.org/repos/asf/hive/blob/61176b10/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterGenerateResultOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterGenerateResultOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterGenerateResultOperator.java
index 3309921..7ef5574 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterGenerateResultOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterGenerateResultOperator.java
@@ -126,6 +126,25 @@ public abstract class VectorMapJoinOuterGenerateResultOperator
*/
/**
+ * Do the per-batch setup for an outer join.
+ */
+ protected void outerPerBatchSetup(VectorizedRowBatch batch) {
+
+ // For join operators that can generate small table results, reset their
+ // (target) scratch columns.
+
+ for (int column : smallTableOutputVectorColumns) {
+ ColumnVector smallTableColumn = batch.cols[column];
+ smallTableColumn.reset();
+ }
+
+ for (int column : bigTableOuterKeyOutputVectorColumns) {
+ ColumnVector bigTableOuterKeyColumn = batch.cols[column];
+ bigTableOuterKeyColumn.reset();
+ }
+ }
+
+ /**
* Generate the outer join output results for one vectorized row batch.
*
* Any filter expressions will apply now since hash map lookup for outer join is complete.
@@ -413,7 +432,7 @@ public abstract class VectorMapJoinOuterGenerateResultOperator
// Mark any scratch small table scratch columns that would normally receive a copy of the
// key as null and repeating.
- for (int column : bigTableOuterKeyMapping.getOutputColumns()) {
+ for (int column : bigTableOuterKeyOutputVectorColumns) {
ColumnVector colVector = batch.cols[column];
colVector.isRepeating = true;
colVector.noNulls = false;
@@ -421,7 +440,7 @@ public abstract class VectorMapJoinOuterGenerateResultOperator
}
// Small table values are set to null and repeating.
- for (int column : smallTableMapping.getOutputColumns()) {
+ for (int column : smallTableOutputVectorColumns) {
ColumnVector colVector = batch.cols[column];
colVector.isRepeating = true;
colVector.noNulls = false;
@@ -442,14 +461,14 @@ public abstract class VectorMapJoinOuterGenerateResultOperator
// Mark any scratch small table scratch columns that would normally receive a copy of the
// key as null, too.
- for (int column : bigTableOuterKeyMapping.getOutputColumns()) {
+ for (int column : bigTableOuterKeyOutputVectorColumns) {
ColumnVector colVector = batch.cols[column];
colVector.noNulls = false;
colVector.isNull[batchIndex] = true;
}
// Small table values are set to null.
- for (int column : smallTableMapping.getOutputColumns()) {
+ for (int column : smallTableOutputVectorColumns) {
ColumnVector colVector = batch.cols[column];
colVector.noNulls = false;
colVector.isNull[batchIndex] = true;
@@ -573,7 +592,7 @@ public abstract class VectorMapJoinOuterGenerateResultOperator
batch.selectedInUse = true;
}
- for (int column : smallTableMapping.getOutputColumns()) {
+ for (int column : smallTableOutputVectorColumns) {
ColumnVector colVector = batch.cols[column];
colVector.noNulls = false;
colVector.isNull[0] = true;
@@ -582,7 +601,7 @@ public abstract class VectorMapJoinOuterGenerateResultOperator
// Mark any scratch small table scratch columns that would normally receive a copy of the key
// as null, too.
- for (int column : bigTableOuterKeyMapping.getOutputColumns()) {
+ for (int column : bigTableOuterKeyOutputVectorColumns) {
ColumnVector colVector = batch.cols[column];
colVector.noNulls = false;
colVector.isNull[0] = true;
http://git-wip-us.apache.org/repos/asf/hive/blob/61176b10/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterLongOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterLongOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterLongOperator.java
index 8f18672..37ccf22 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterLongOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterLongOperator.java
@@ -123,6 +123,10 @@ public class VectorMapJoinOuterLongOperator extends VectorMapJoinOuterGenerateRe
batchCounter++;
+ // Do the per-batch setup for an outer join.
+
+ outerPerBatchSetup(batch);
+
// For outer join, DO NOT apply filters yet. It is incorrect for outer join to
// apply the filter before hash table matching.
http://git-wip-us.apache.org/repos/asf/hive/blob/61176b10/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterMultiKeyOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterMultiKeyOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterMultiKeyOperator.java
index ffee959..23a29f7 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterMultiKeyOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterMultiKeyOperator.java
@@ -128,6 +128,10 @@ public class VectorMapJoinOuterMultiKeyOperator extends VectorMapJoinOuterGenera
batchCounter++;
+ // Do the per-batch setup for an outer join.
+
+ outerPerBatchSetup(batch);
+
// For outer join, DO NOT apply filters yet. It is incorrect for outer join to
// apply the filter before hash table matching.
http://git-wip-us.apache.org/repos/asf/hive/blob/61176b10/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterStringOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterStringOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterStringOperator.java
index 5167c19..f0af3f6 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterStringOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterStringOperator.java
@@ -115,6 +115,10 @@ public class VectorMapJoinOuterStringOperator extends VectorMapJoinOuterGenerate
batchCounter++;
+ // Do the per-batch setup for an outer join.
+
+ outerPerBatchSetup(batch);
+
// For outer join, DO NOT apply filters yet. It is incorrect for outer join to
// apply the filter before hash table matching.