Repository: hive Updated Branches: refs/heads/branch-1.2 fe4f7a51c -> ef9686bf8
HIVE-10609: Vectorization : Q64 fails with ClassCastException (Matt McCline via Vikram Dixit K) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/ef9686bf Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/ef9686bf Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/ef9686bf Branch: refs/heads/branch-1.2 Commit: ef9686bf8dac78b3071f4a1713bf5cb46366d7b0 Parents: fe4f7a5 Author: vikram <[email protected]> Authored: Mon May 11 15:55:21 2015 -0700 Committer: vikram <[email protected]> Committed: Mon May 11 15:55:21 2015 -0700 ---------------------------------------------------------------------- .../hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java | 8 ++++++-- .../ql/exec/vector/VectorMapJoinOuterFilteredOperator.java | 6 ++++-- 2 files changed, 10 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/ef9686bf/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java index 15c747e..e9bd44a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java @@ -101,15 +101,19 @@ public class VectorMapJoinOperator extends VectorMapJoinBaseOperator { @Override public Collection<Future<?>> initializeOp(Configuration hconf) throws HiveException { + // Use a final variable to properly parameterize the processVectorInspector closure. + // Using a member variable in the closure will not do the right thing... + final int parameterizePosBigTable = conf.getPosBigTable(); + // Code borrowed from VectorReduceSinkOperator.initializeOp VectorExpressionWriterFactory.processVectorInspector( - (StructObjectInspector) inputObjInspectors[0], + (StructObjectInspector) inputObjInspectors[parameterizePosBigTable], new VectorExpressionWriterFactory.SingleOIDClosure() { @Override public void assign(VectorExpressionWriter[] writers, ObjectInspector objectInspector) { rowWriters = writers; - inputObjInspectors[0] = objectInspector; + inputObjInspectors[parameterizePosBigTable] = objectInspector; } }); singleRow = new Object[rowWriters.length]; http://git-wip-us.apache.org/repos/asf/hive/blob/ef9686bf/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOuterFilteredOperator.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOuterFilteredOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOuterFilteredOperator.java index 5aecfcc..a96816f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOuterFilteredOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOuterFilteredOperator.java @@ -62,10 +62,12 @@ public class VectorMapJoinOuterFilteredOperator extends VectorMapJoinBaseOperato @Override public Collection<Future<?>> initializeOp(Configuration hconf) throws HiveException { + final int posBigTable = conf.getPosBigTable(); + // We need a input object inspector that is for the row we will extract out of the // vectorized row batch, not for example, an original inspector for an ORC table, etc. - inputObjInspectors[0] = - VectorizedBatchUtil.convertToStandardStructObjectInspector((StructObjectInspector) inputObjInspectors[0]); + inputObjInspectors[posBigTable] = + VectorizedBatchUtil.convertToStandardStructObjectInspector((StructObjectInspector) inputObjInspectors[posBigTable]); // Call super VectorMapJoinOuterFilteredOperator, which calls super MapJoinOperator with // new input inspector.
