http://git-wip-us.apache.org/repos/asf/hive/blob/aed21d0b/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 77b44fb..c288731 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
@@ -22,7 +22,6 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
-
 import org.apache.commons.lang.ArrayUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -57,7 +56,6 @@ import org.apache.hadoop.hive.ql.plan.MapJoinDesc;
 import org.apache.hadoop.hive.ql.plan.OperatorDesc;
 import org.apache.hadoop.hive.ql.plan.VectorMapJoinDesc;
 import 
org.apache.hadoop.hive.ql.plan.VectorMapJoinDesc.HashTableImplementationType;
-import org.apache.hadoop.hive.ql.plan.VectorMapJoinInfo;
 import org.apache.hadoop.hive.ql.plan.api.OperatorType;
 import org.apache.hadoop.hive.serde2.lazybinary.fast.LazyBinaryDeserializeRead;
 import org.apache.hadoop.hive.serde2.objectinspector.StructField;
@@ -65,8 +63,6 @@ import 
org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
 
-import com.google.common.base.Preconditions;
-
 /**
  * This class is common operator class for native vectorized map join.
  *
@@ -76,43 +72,7 @@ import com.google.common.base.Preconditions;
  */
 public abstract class VectorMapJoinCommonOperator extends MapJoinOperator 
implements VectorizationContextRegion {
   private static final long serialVersionUID = 1L;
-
-  
//------------------------------------------------------------------------------------------------
-
-  private static final String CLASS_NAME = 
VectorMapJoinCommonOperator.class.getName();
-private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
-
-  protected abstract String getLoggingPrefix();
-
-  // For debug tracing: information about the map or reduce task, operator, 
operator class, etc.
-  protected transient String loggingPrefix;
-
-  protected String getLoggingPrefix(String className) {
-    if (loggingPrefix == null) {
-      initLoggingPrefix(className);
-    }
-    return loggingPrefix;
-  }
-
-  protected void initLoggingPrefix(String className) {
-    if (hconf == null) {
-      // Constructor time...
-      loggingPrefix = className;
-    } else {
-      // Determine the name of our map or reduce task for debug tracing.
-      BaseWork work = Utilities.getMapWork(hconf);
-      if (work == null) {
-        work = Utilities.getReduceWork(hconf);
-      }
-      loggingPrefix = className + " " + work.getName() + " " + getOperatorId();
-    }
-  }
-
-  
//------------------------------------------------------------------------------------------------
-
-  protected VectorMapJoinDesc vectorDesc;
-
-  protected VectorMapJoinInfo vectorMapJoinInfo;
+  private static final Logger LOG = 
LoggerFactory.getLogger(VectorMapJoinCommonOperator.class.getName());
 
   // Whether this operator is an outer join.
   protected boolean isOuterJoin;
@@ -128,10 +88,10 @@ private static final Logger LOG = 
LoggerFactory.getLogger(CLASS_NAME);
   // a mixture of input big table columns and new scratch columns.
   protected VectorizationContext vOutContext;
 
-  // The output column projection of the vectorized row batch.  And, the type 
infos of the output
+  // The output column projection of the vectorized row batch.  And, the type 
names of the output
   // columns.
   protected int[] outputProjection;
-  protected TypeInfo[] outputTypeInfos;
+  protected String[] outputTypeNames;
 
   // These are the vectorized batch expressions for filtering, key 
expressions, and value
   // expressions.
@@ -141,17 +101,15 @@ private static final Logger LOG = 
LoggerFactory.getLogger(CLASS_NAME);
 
   // This is map of which vectorized row batch columns are the big table key 
columns.  Since
   // we may have key expressions that produce new scratch columns, we need a 
mapping.
-  // And, we have their type infos.
+  // And, we have their type names.
   protected int[] bigTableKeyColumnMap;
-  protected String[] bigTableKeyColumnNames;
-  protected TypeInfo[] bigTableKeyTypeInfos;
+  protected ArrayList<String> bigTableKeyTypeNames;
 
   // Similarly, this is map of which vectorized row batch columns are the big 
table value columns.
   // Since we may have value expressions that produce new scratch columns, we 
need a mapping.
-  // And, we have their type infos.
+  // And, we have their type names.
   protected int[] bigTableValueColumnMap;
-  protected String[] bigTableValueColumnNames;
-  protected TypeInfo[] bigTableValueTypeInfos;
+  protected ArrayList<String> bigTableValueTypeNames;
 
   // This is a mapping of which big table columns (input and key/value 
expressions) will be
   // part of the big table portion of the join output result.
@@ -166,8 +124,6 @@ private static final Logger LOG = 
LoggerFactory.getLogger(CLASS_NAME);
   // to output batch scratch columns for the small table portion.
   protected VectorColumnSourceMapping smallTableMapping;
 
-  protected VectorColumnSourceMapping projectionMapping;
-
   // These are the output columns for the small table and the outer small 
table keys.
   protected int[] smallTableOutputVectorColumns;
   protected int[] bigTableOuterKeyOutputVectorColumns;
@@ -181,6 +137,9 @@ private static final Logger LOG = 
LoggerFactory.getLogger(CLASS_NAME);
   // transient.
   //---------------------------------------------------------------------------
 
+  // For debug tracing: the name of the map or reduce task.
+  protected transient String taskName;
+
   // The threshold where we should use a repeating vectorized row batch 
optimization for
   // generating join output results.
   protected transient boolean useOverflowRepeatedThreshold;
@@ -233,9 +192,6 @@ private static final Logger LOG = 
LoggerFactory.getLogger(CLASS_NAME);
 
     MapJoinDesc desc = (MapJoinDesc) conf;
     this.conf = desc;
-    vectorDesc = (VectorMapJoinDesc) desc.getVectorDesc();
-    vectorMapJoinInfo = vectorDesc.getVectorMapJoinInfo();
-    Preconditions.checkState(vectorMapJoinInfo != null);
 
     this.vContext = vContext;
 
@@ -254,29 +210,215 @@ private static final Logger LOG = 
LoggerFactory.getLogger(CLASS_NAME);
     bigTableFilterExpressions = 
vContext.getVectorExpressions(filterExpressions.get(posBigTable),
         VectorExpressionDescriptor.Mode.FILTER);
 
-    bigTableKeyColumnMap = vectorMapJoinInfo.getBigTableKeyColumnMap();
-    bigTableKeyColumnNames = vectorMapJoinInfo.getBigTableKeyColumnNames();
-    bigTableKeyTypeInfos = vectorMapJoinInfo.getBigTableKeyTypeInfos();
-    bigTableKeyExpressions = vectorMapJoinInfo.getBigTableKeyExpressions();
-
-    bigTableValueColumnMap = vectorMapJoinInfo.getBigTableValueColumnMap();
-    bigTableValueColumnNames = vectorMapJoinInfo.getBigTableValueColumnNames();
-    bigTableValueTypeInfos = vectorMapJoinInfo.getBigTableValueTypeInfos();
-    bigTableValueExpressions = vectorMapJoinInfo.getBigTableValueExpressions();
-
-    bigTableRetainedMapping = vectorMapJoinInfo.getBigTableRetainedMapping();
-
-    bigTableOuterKeyMapping =  vectorMapJoinInfo.getBigTableOuterKeyMapping();
+    List<ExprNodeDesc> keyDesc = desc.getKeys().get(posBigTable);
+    bigTableKeyExpressions = vContext.getVectorExpressions(keyDesc);
+
+    // Since a key expression can be a calculation and the key will go into a 
scratch column,
+    // we need the mapping and type information.
+    bigTableKeyColumnMap = new int[bigTableKeyExpressions.length];
+    bigTableKeyTypeNames = new ArrayList<String>();
+    boolean onlyColumns = true;
+    for (int i = 0; i < bigTableKeyColumnMap.length; i++) {
+      VectorExpression ve = bigTableKeyExpressions[i];
+      if (!IdentityExpression.isColumnOnly(ve)) {
+        onlyColumns = false;
+      }
+      bigTableKeyTypeNames.add(keyDesc.get(i).getTypeString());
+      bigTableKeyColumnMap[i] = ve.getOutputColumn();
+    }
+    if (onlyColumns) {
+      bigTableKeyExpressions = null;
+    }
 
-    smallTableMapping = vectorMapJoinInfo.getSmallTableMapping();
+    List<ExprNodeDesc> bigTableExprs = desc.getExprs().get(posBigTable);
+    bigTableValueExpressions = vContext.getVectorExpressions(bigTableExprs);
 
-    projectionMapping = vectorMapJoinInfo.getProjectionMapping();
+    /*
+     * Similarly, we need a mapping since a value expression can be a 
calculation and the value
+     * will go into a scratch column.
+     */
+    bigTableValueColumnMap = new int[bigTableValueExpressions.length];
+    bigTableValueTypeNames = new ArrayList<String>();
+    onlyColumns = true;
+    for (int i = 0; i < bigTableValueColumnMap.length; i++) {
+      VectorExpression ve = bigTableValueExpressions[i];
+      if (!IdentityExpression.isColumnOnly(ve)) {
+        onlyColumns = false;
+      }
+      bigTableValueTypeNames.add(bigTableExprs.get(i).getTypeString());
+      bigTableValueColumnMap[i] = ve.getOutputColumn();
+    }
+    if (onlyColumns) {
+      bigTableValueExpressions = null;
+    }
 
     determineCommonInfo(isOuterJoin);
   }
 
   protected void determineCommonInfo(boolean isOuter) throws HiveException {
 
+    bigTableRetainedMapping = new VectorColumnOutputMapping("Big Table 
Retained Mapping");
+
+    bigTableOuterKeyMapping = new VectorColumnOutputMapping("Big Table Outer 
Key Mapping");
+
+    // The order of the fields in the LazyBinary small table value must be 
used, so
+    // we use the source ordering flavor for the mapping.
+    smallTableMapping = new VectorColumnSourceMapping("Small Table Mapping");
+
+    // We use a mapping object here so we can build the projection in any 
order and
+    // get the ordered by 0 to n-1 output columns at the end.
+    //
+    // Also, to avoid copying a big table key into the small table result area 
for inner joins,
+    // we reference it with the projection so there can be duplicate output 
columns
+    // in the projection.
+    VectorColumnSourceMapping projectionMapping = new 
VectorColumnSourceMapping("Projection Mapping");
+
+    /*
+     * Gather up big and small table output result information from the 
MapJoinDesc.
+     */
+    List<Integer> bigTableRetainList = conf.getRetainList().get(posBigTable);
+    int bigTableRetainSize = bigTableRetainList.size();
+
+    int[] smallTableIndices;
+    int smallTableIndicesSize;
+    List<ExprNodeDesc> smallTableExprs = 
conf.getExprs().get(posSingleVectorMapJoinSmallTable);
+    if (conf.getValueIndices() != null && 
conf.getValueIndices().get(posSingleVectorMapJoinSmallTable) != null) {
+      smallTableIndices = 
conf.getValueIndices().get(posSingleVectorMapJoinSmallTable);
+      smallTableIndicesSize = smallTableIndices.length;
+    } else {
+      smallTableIndices = null;
+      smallTableIndicesSize = 0;
+    }
+
+    List<Integer> smallTableRetainList = 
conf.getRetainList().get(posSingleVectorMapJoinSmallTable);
+    int smallTableRetainSize = smallTableRetainList.size();
+
+    int smallTableResultSize = 0;
+    if (smallTableIndicesSize > 0) {
+      smallTableResultSize = smallTableIndicesSize;
+    } else if (smallTableRetainSize > 0) {
+      smallTableResultSize = smallTableRetainSize;
+    }
+
+    /*
+     * Determine the big table retained mapping first so we can optimize out 
(with
+     * projection) copying inner join big table keys in the subsequent small 
table results section.
+     */
+    int nextOutputColumn = (order[0] == posBigTable ? 0 : 
smallTableResultSize);
+    for (int i = 0; i < bigTableRetainSize; i++) {
+
+      // Since bigTableValueExpressions may do a calculation and produce a 
scratch column, we
+      // need to map to the right batch column.
+
+      int retainColumn = bigTableRetainList.get(i);
+      int batchColumnIndex = bigTableValueColumnMap[retainColumn];
+      String typeName = bigTableValueTypeNames.get(i);
+
+      // With this map we project the big table batch to make it look like an 
output batch.
+      projectionMapping.add(nextOutputColumn, batchColumnIndex, typeName);
+
+      // Collect columns we copy from the big table batch to the overflow 
batch.
+      if (!bigTableRetainedMapping.containsOutputColumn(batchColumnIndex)) {
+        // Tolerate repeated use of a big table column.
+        bigTableRetainedMapping.add(batchColumnIndex, batchColumnIndex, 
typeName);
+      }
+
+      nextOutputColumn++;
+    }
+
+    /*
+     * Now determine the small table results.
+     */
+    int firstSmallTableOutputColumn;
+    firstSmallTableOutputColumn = (order[0] == posBigTable ? 
bigTableRetainSize : 0);
+    int smallTableOutputCount = 0;
+    nextOutputColumn = firstSmallTableOutputColumn;
+
+    // Small table indices has more information (i.e. keys) than retain, so 
use it if it exists...
+    if (smallTableIndicesSize > 0) {
+      smallTableOutputCount = smallTableIndicesSize;
+
+      for (int i = 0; i < smallTableIndicesSize; i++) {
+        if (smallTableIndices[i] >= 0) {
+
+          // Zero and above numbers indicate a big table key is needed for
+          // small table result "area".
+
+          int keyIndex = smallTableIndices[i];
+
+          // Since bigTableKeyExpressions may do a calculation and produce a 
scratch column, we
+          // need to map the right column.
+          int batchKeyColumn = bigTableKeyColumnMap[keyIndex];
+          String typeName = bigTableKeyTypeNames.get(keyIndex);
+
+          if (!isOuter) {
+
+            // Optimize inner join keys of small table results.
+
+            // Project the big table key into the small table result "area".
+            projectionMapping.add(nextOutputColumn, batchKeyColumn, typeName);
+
+            if (!bigTableRetainedMapping.containsOutputColumn(batchKeyColumn)) 
{
+              // If necessary, copy the big table key into the overflow 
batch's small table
+              // result "area".
+              bigTableRetainedMapping.add(batchKeyColumn, batchKeyColumn, 
typeName);
+            }
+          } else {
+
+            // For outer joins, since the small table key can be null when 
there is no match,
+            // we must have a physical (scratch) column for those keys.  We 
cannot use the
+            // projection optimization used by inner joins above.
+
+            int scratchColumn = vOutContext.allocateScratchColumn(typeName);
+            projectionMapping.add(nextOutputColumn, scratchColumn, typeName);
+
+            bigTableRetainedMapping.add(batchKeyColumn, scratchColumn, 
typeName);
+
+            bigTableOuterKeyMapping.add(batchKeyColumn, scratchColumn, 
typeName);
+          }
+        } else {
+
+          // Negative numbers indicate a column to be (deserialize) read from 
the small table's
+          // LazyBinary value row.
+          int smallTableValueIndex = -smallTableIndices[i] - 1;
+
+          String typeName = smallTableExprs.get(i).getTypeString();
+
+          // Make a new big table scratch column for the small table value.
+          int scratchColumn = vOutContext.allocateScratchColumn(typeName);
+          projectionMapping.add(nextOutputColumn, scratchColumn, typeName);
+
+          smallTableMapping.add(smallTableValueIndex, scratchColumn, typeName);
+        }
+        nextOutputColumn++;
+      }
+    } else if (smallTableRetainSize > 0) {
+      smallTableOutputCount = smallTableRetainSize;
+
+      // Only small table values appear in join output result.
+
+      for (int i = 0; i < smallTableRetainSize; i++) {
+        int smallTableValueIndex = smallTableRetainList.get(i);
+
+        // Make a new big table scratch column for the small table value.
+        String typeName = smallTableExprs.get(i).getTypeString();
+        int scratchColumn = vOutContext.allocateScratchColumn(typeName);
+
+        projectionMapping.add(nextOutputColumn, scratchColumn, typeName);
+
+        smallTableMapping.add(smallTableValueIndex, scratchColumn, typeName);
+        nextOutputColumn++;
+      }
+    }
+
+    // Convert dynamic arrays and maps to simple arrays.
+
+    bigTableRetainedMapping.finalize();
+
+    bigTableOuterKeyMapping.finalize();
+
+    smallTableMapping.finalize();
+
     bigTableOuterKeyOutputVectorColumns = 
bigTableOuterKeyMapping.getOutputColumns();
     smallTableOutputVectorColumns = smallTableMapping.getOutputColumns();
 
@@ -287,37 +429,46 @@ private static final Logger LOG = 
LoggerFactory.getLogger(CLASS_NAME);
 
     smallTableByteColumnVectorColumns = 
getByteColumnVectorColumns(smallTableMapping);
 
+    projectionMapping.finalize();
+
+    // Verify we added an entry for each output.
+    assert projectionMapping.isSourceSequenceGood();
+
     outputProjection = projectionMapping.getOutputColumns();
-    outputTypeInfos = projectionMapping.getTypeInfos();
+    outputTypeNames = projectionMapping.getTypeNames();
 
     if (isLogDebugEnabled) {
       int[] orderDisplayable = new int[order.length];
       for (int i = 0; i < order.length; i++) {
         orderDisplayable[i] = (int) order[i];
       }
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor 
order " + Arrays.toString(orderDisplayable));
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor 
posBigTable " + (int) posBigTable);
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor 
posSingleVectorMapJoinSmallTable " + (int) posSingleVectorMapJoinSmallTable);
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor order " + 
Arrays.toString(orderDisplayable));
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor posBigTable " + (int) posBigTable);
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor posSingleVectorMapJoinSmallTable " + 
(int) posSingleVectorMapJoinSmallTable);
+
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor bigTableKeyColumnMap " + 
Arrays.toString(bigTableKeyColumnMap));
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor bigTableKeyTypeNames " + 
bigTableKeyTypeNames);
 
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor 
bigTableKeyColumnMap " + Arrays.toString(bigTableKeyColumnMap));
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor 
bigTableKeyColumnNames " + Arrays.toString(bigTableKeyColumnNames));
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor 
bigTableKeyTypeInfos " + Arrays.toString(bigTableKeyTypeInfos));
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor bigTableValueColumnMap " + 
Arrays.toString(bigTableValueColumnMap));
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor bigTableValueTypeNames " + 
bigTableValueTypeNames);
 
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor 
bigTableValueColumnMap " + Arrays.toString(bigTableValueColumnMap));
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor 
bigTableValueColumnNames " + Arrays.toString(bigTableValueColumnNames));
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor 
bigTableValueTypeNames " + Arrays.toString(bigTableValueTypeInfos));
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor smallTableIndices " + 
Arrays.toString(smallTableIndices));
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor smallTableRetainList " + 
smallTableRetainList);
 
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor 
bigTableRetainedMapping " + bigTableRetainedMapping.toString());
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor firstSmallTableOutputColumn " + 
firstSmallTableOutputColumn);
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor smallTableOutputCount " + 
smallTableOutputCount);
 
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor 
bigTableOuterKeyMapping " + bigTableOuterKeyMapping.toString());
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor bigTableRetainedMapping " + 
bigTableRetainedMapping.toString());
 
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor 
smallTableMapping " + smallTableMapping.toString());
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor bigTableOuterKeyMapping " + 
bigTableOuterKeyMapping.toString());
 
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor 
bigTableByteColumnVectorColumns " + 
Arrays.toString(bigTableByteColumnVectorColumns));
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor 
smallTableByteColumnVectorColumns " + 
Arrays.toString(smallTableByteColumnVectorColumns));
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor smallTableMapping " + 
smallTableMapping.toString());
 
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor 
outputProjection " + Arrays.toString(outputProjection));
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor 
outputTypeInfos " + Arrays.toString(outputTypeInfos));
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor bigTableByteColumnVectorColumns " + 
Arrays.toString(bigTableByteColumnVectorColumns));
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor smallTableByteColumnVectorColumns " + 
Arrays.toString(smallTableByteColumnVectorColumns));
+
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor outputProjection " + 
Arrays.toString(outputProjection));
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor outputTypeNames " + 
Arrays.toString(outputTypeNames));
     }
 
     setupVOutContext(conf.getOutputColumnNames());
@@ -331,10 +482,10 @@ private static final Logger LOG = 
LoggerFactory.getLogger(CLASS_NAME);
     ArrayList<Integer> list = new ArrayList<Integer>();
     int count = mapping.getCount();
     int[] outputColumns = mapping.getOutputColumns();
-    TypeInfo[] typeInfos = mapping.getTypeInfos();
+    String[] typeNames = mapping.getTypeNames();
     for (int i = 0; i < count; i++) {
       int outputColumn = outputColumns[i];
-      String typeName = typeInfos[i].getTypeName();
+      String typeName = typeNames[i];
       if (VectorizationContext.isStringFamily(typeName)) {
         list.add(outputColumn);
       }
@@ -349,10 +500,10 @@ private static final Logger LOG = 
LoggerFactory.getLogger(CLASS_NAME);
    */
   protected void setupVOutContext(List<String> outputColumnNames) {
     if (isLogDebugEnabled) {
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor 
outputColumnNames " + outputColumnNames);
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor outputColumnNames " + 
outputColumnNames);
     }
     if (outputColumnNames.size() != outputProjection.length) {
-      throw new RuntimeException("Output column names " + outputColumnNames + 
" length and output projection " + Arrays.toString(outputProjection) + " / " + 
Arrays.toString(outputTypeInfos) + " length mismatch");
+      throw new RuntimeException("Output column names " + outputColumnNames + 
" length and output projection " + Arrays.toString(outputProjection) + " / " + 
Arrays.toString(outputTypeNames) + " length mismatch");
     }
     vOutContext.resetProjectionColumns();
     for (int i = 0; i < outputColumnNames.size(); ++i) {
@@ -361,7 +512,7 @@ private static final Logger LOG = 
LoggerFactory.getLogger(CLASS_NAME);
       vOutContext.addProjectionColumn(columnName, outputColumn);
 
       if (isLogDebugEnabled) {
-        LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator 
constructor addProjectionColumn " + i + " columnName " + columnName + " 
outputColumn " + outputColumn);
+        LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator constructor addProjectionColumn " + i + " 
columnName " + columnName + " outputColumn " + outputColumn);
       }
     }
   }
@@ -371,7 +522,7 @@ private static final Logger LOG = 
LoggerFactory.getLogger(CLASS_NAME);
    */
   @Override
   protected HashTableLoader getHashTableLoader(Configuration hconf) {
-    VectorMapJoinDesc vectorDesc = (VectorMapJoinDesc) conf.getVectorDesc();
+    VectorMapJoinDesc vectorDesc = conf.getVectorDesc();
     HashTableImplementationType hashTableImplementationType = 
vectorDesc.hashTableImplementationType();
     HashTableLoader hashTableLoader;
     switch (vectorDesc.hashTableImplementationType()) {
@@ -395,6 +546,15 @@ private static final Logger LOG = 
LoggerFactory.getLogger(CLASS_NAME);
   protected void initializeOp(Configuration hconf) throws HiveException {
     super.initializeOp(hconf);
 
+    if (isLogDebugEnabled) {
+      // Determine the name of our map or reduce task for debug tracing.
+      BaseWork work = Utilities.getMapWork(hconf);
+      if (work == null) {
+        work = Utilities.getReduceWork(hconf);
+      }
+      taskName = work.getName();
+    }
+
     /*
      * Get configuration parameters.
      */
@@ -410,8 +570,9 @@ private static final Logger LOG = 
LoggerFactory.getLogger(CLASS_NAME);
       smallTableVectorDeserializeRow =
           new VectorDeserializeRow<LazyBinaryDeserializeRead>(
               new LazyBinaryDeserializeRead(
-                  smallTableMapping.getTypeInfos(),
-                  /* useExternalBuffer */ true));
+                  VectorizedBatchUtil.typeInfosFromTypeNames(
+                      smallTableMapping.getTypeNames()),
+                      /* useExternalBuffer */ true));
       
smallTableVectorDeserializeRow.init(smallTableMapping.getOutputColumns());
     }
 
@@ -435,13 +596,13 @@ private static final Logger LOG = 
LoggerFactory.getLogger(CLASS_NAME);
 
     if (isLogDebugEnabled) {
       int[] currentScratchColumns = vOutContext.currentScratchColumns();
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator 
initializeOp currentScratchColumns " + Arrays.toString(currentScratchColumns));
+      LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator initializeOp currentScratchColumns " + 
Arrays.toString(currentScratchColumns));
 
       StructObjectInspector structOutputObjectInspector = 
(StructObjectInspector) outputObjInspector;
       List<? extends StructField> fields = 
structOutputObjectInspector.getAllStructFieldRefs();
       int i = 0;
       for (StructField field : fields) {
-        LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator 
initializeOp " + i + " field " + field.getFieldName() + " type " + 
field.getFieldObjectInspector().getTypeName());
+        LOG.debug("VectorMapJoinInnerBigOnlyCommonOperator initializeOp " + i 
+ " field " + field.getFieldName() + " type " + 
field.getFieldObjectInspector().getTypeName());
         i++;
       }
     }
@@ -452,7 +613,7 @@ private static final Logger LOG = 
LoggerFactory.getLogger(CLASS_NAME);
     // setup mapJoinTables and serdes
     super.completeInitializationOp(os);
 
-    VectorMapJoinDesc vectorDesc = (VectorMapJoinDesc) conf.getVectorDesc();
+    VectorMapJoinDesc vectorDesc = conf.getVectorDesc();
     HashTableImplementationType hashTableImplementationType = 
vectorDesc.hashTableImplementationType();
     switch (vectorDesc.hashTableImplementationType()) {
     case OPTIMIZED:
@@ -494,7 +655,7 @@ private static final Logger LOG = 
LoggerFactory.getLogger(CLASS_NAME);
     // First, just allocate just the projection columns we will be using.
     for (int i = 0; i < outputProjection.length; i++) {
       int outputColumn = outputProjection[i];
-      String typeName = outputTypeInfos[i].getTypeName();
+      String typeName = outputTypeNames[i];
       allocateOverflowBatchColumnVector(overflowBatch, outputColumn, typeName);
     }
 
@@ -526,7 +687,7 @@ private static final Logger LOG = 
LoggerFactory.getLogger(CLASS_NAME);
       overflowBatch.cols[outputColumn] = 
VectorizedBatchUtil.createColumnVector(typeInfo);
 
       if (isLogDebugEnabled) {
-        LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator 
initializeOp overflowBatch outputColumn " + outputColumn + " class " + 
overflowBatch.cols[outputColumn].getClass().getSimpleName());
+        LOG.debug(taskName + ", " + getOperatorId() + " 
VectorMapJoinCommonOperator initializeOp overflowBatch outputColumn " + 
outputColumn + " class " + 
overflowBatch.cols[outputColumn].getClass().getSimpleName());
       }
     }
   }
@@ -563,9 +724,9 @@ private static final Logger LOG = 
LoggerFactory.getLogger(CLASS_NAME);
   }
 
   protected void displayBatchColumns(VectorizedRowBatch batch, String 
batchName) {
-    LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator commonSetup " 
+ batchName + " column count " + batch.numCols);
+    LOG.debug("commonSetup " + batchName + " column count " + batch.numCols);
     for (int column = 0; column < batch.numCols; column++) {
-      LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator commonSetup 
" + batchName + "     column " + column + " type " + (batch.cols[column] == 
null ? "NULL" : batch.cols[column].getClass().getSimpleName()));
+      LOG.debug("commonSetup " + batchName + "     column " + column + " type 
" + (batch.cols[column] == null ? "NULL" : 
batch.cols[column].getClass().getSimpleName()));
     }
   }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/aed21d0b/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 43f3951..0bba141 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
@@ -45,17 +45,8 @@ import 
org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
 public class VectorMapJoinInnerBigOnlyLongOperator extends 
VectorMapJoinInnerBigOnlyGenerateResultOperator {
 
   private static final long serialVersionUID = 1L;
-
-  
//------------------------------------------------------------------------------------------------
-
+  private static final Logger LOG = 
LoggerFactory.getLogger(VectorMapJoinInnerBigOnlyLongOperator.class.getName());
   private static final String CLASS_NAME = 
VectorMapJoinInnerBigOnlyLongOperator.class.getName();
-  private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
-
-  protected String getLoggingPrefix() {
-    return super.getLoggingPrefix(CLASS_NAME);
-  }
-
-  
//------------------------------------------------------------------------------------------------
 
   // (none)
 

http://git-wip-us.apache.org/repos/asf/hive/blob/aed21d0b/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 95fb0c2..621804b 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
@@ -40,8 +40,6 @@ import 
org.apache.hadoop.hive.ql.exec.vector.VectorSerializeRow;
 import org.apache.hadoop.hive.serde2.ByteStream.Output;
 import 
org.apache.hadoop.hive.serde2.binarysortable.fast.BinarySortableSerializeWrite;
 
-import com.google.common.base.Preconditions;
-
 /*
  * Specialized class for doing a vectorized map join that is an inner join on 
Multi-Key
  * and only big table columns appear in the join result so a hash multi-set is 
used.
@@ -50,17 +48,8 @@ import com.google.common.base.Preconditions;
 public class VectorMapJoinInnerBigOnlyMultiKeyOperator extends 
VectorMapJoinInnerBigOnlyGenerateResultOperator {
 
   private static final long serialVersionUID = 1L;
-
-  
//------------------------------------------------------------------------------------------------
-
+  private static final Logger LOG = 
LoggerFactory.getLogger(VectorMapJoinInnerBigOnlyMultiKeyOperator.class.getName());
   private static final String CLASS_NAME = 
VectorMapJoinInnerBigOnlyMultiKeyOperator.class.getName();
-  private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
-
-  protected String getLoggingPrefix() {
-    return super.getLoggingPrefix(CLASS_NAME);
-  }
-
-  
//------------------------------------------------------------------------------------------------
 
   // (none)
 
@@ -125,7 +114,7 @@ public class VectorMapJoinInnerBigOnlyMultiKeyOperator 
extends VectorMapJoinInne
 
         keyVectorSerializeWrite = new VectorSerializeRow(
                                         new 
BinarySortableSerializeWrite(bigTableKeyColumnMap.length));
-        keyVectorSerializeWrite.init(bigTableKeyTypeInfos, 
bigTableKeyColumnMap);
+        keyVectorSerializeWrite.init(bigTableKeyTypeNames, 
bigTableKeyColumnMap);
 
         currentKeyOutput = new Output();
         saveKeyOutput = new Output();

http://git-wip-us.apache.org/repos/asf/hive/blob/aed21d0b/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 044e3e6..10e75ab 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
@@ -46,17 +46,8 @@ import 
org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr;
 public class VectorMapJoinInnerBigOnlyStringOperator extends 
VectorMapJoinInnerBigOnlyGenerateResultOperator {
 
   private static final long serialVersionUID = 1L;
-
-  
//------------------------------------------------------------------------------------------------
-
+  private static final Logger LOG = 
LoggerFactory.getLogger(VectorMapJoinInnerBigOnlyStringOperator.class.getName());
   private static final String CLASS_NAME = 
VectorMapJoinInnerBigOnlyStringOperator.class.getName();
-  private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
-
-  protected String getLoggingPrefix() {
-    return super.getLoggingPrefix(CLASS_NAME);
-  }
-
-  
//------------------------------------------------------------------------------------------------
 
   // (none)
 

http://git-wip-us.apache.org/repos/asf/hive/blob/aed21d0b/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 c85e1d8..804d69c 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
@@ -44,17 +44,8 @@ import 
org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
 public class VectorMapJoinInnerLongOperator extends 
VectorMapJoinInnerGenerateResultOperator {
 
   private static final long serialVersionUID = 1L;
-
-  
//------------------------------------------------------------------------------------------------
-
+  private static final Logger LOG = 
LoggerFactory.getLogger(VectorMapJoinInnerLongOperator.class.getName());
   private static final String CLASS_NAME = 
VectorMapJoinInnerLongOperator.class.getName();
-  private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
-
-  protected String getLoggingPrefix() {
-    return super.getLoggingPrefix(CLASS_NAME);
-  }
-
-  
//------------------------------------------------------------------------------------------------
 
   // (none)
 

http://git-wip-us.apache.org/repos/asf/hive/blob/aed21d0b/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 a108cd0..fcfa0bd 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
@@ -39,8 +39,6 @@ import 
org.apache.hadoop.hive.ql.exec.vector.VectorSerializeRow;
 import org.apache.hadoop.hive.serde2.ByteStream.Output;
 import 
org.apache.hadoop.hive.serde2.binarysortable.fast.BinarySortableSerializeWrite;
 
-import com.google.common.base.Preconditions;
-
 /*
  * Specialized class for doing a vectorized map join that is an inner join on 
a Multi-Key
  * using a hash map.
@@ -48,17 +46,8 @@ import com.google.common.base.Preconditions;
 public class VectorMapJoinInnerMultiKeyOperator extends 
VectorMapJoinInnerGenerateResultOperator {
 
   private static final long serialVersionUID = 1L;
-
-  
//------------------------------------------------------------------------------------------------
-
-  private static final String CLASS_NAME = 
VectorMapJoinInnerMultiKeyOperator.class.getName();
   private static final Logger LOG = 
LoggerFactory.getLogger(VectorMapJoinInnerMultiKeyOperator.class.getName());
-
-  protected String getLoggingPrefix() {
-    return super.getLoggingPrefix(CLASS_NAME);
-  }
-
-  
//------------------------------------------------------------------------------------------------
+  private static final String CLASS_NAME = 
VectorMapJoinInnerMultiKeyOperator.class.getName();
 
   // (none)
 
@@ -123,7 +112,7 @@ public class VectorMapJoinInnerMultiKeyOperator extends 
VectorMapJoinInnerGenera
 
         keyVectorSerializeWrite = new VectorSerializeRow(
                                         new 
BinarySortableSerializeWrite(bigTableKeyColumnMap.length));
-        keyVectorSerializeWrite.init(bigTableKeyTypeInfos, 
bigTableKeyColumnMap);
+        keyVectorSerializeWrite.init(bigTableKeyTypeNames, 
bigTableKeyColumnMap);
 
         currentKeyOutput = new Output();
         saveKeyOutput = new Output();

http://git-wip-us.apache.org/repos/asf/hive/blob/aed21d0b/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 3211d7d..0f9baae 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
@@ -45,17 +45,8 @@ import 
org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr;
 public class VectorMapJoinInnerStringOperator extends 
VectorMapJoinInnerGenerateResultOperator {
 
   private static final long serialVersionUID = 1L;
-
-  
//------------------------------------------------------------------------------------------------
-
+  private static final Logger LOG = 
LoggerFactory.getLogger(VectorMapJoinInnerStringOperator.class.getName());
   private static final String CLASS_NAME = 
VectorMapJoinInnerStringOperator.class.getName();
-  private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
-
-  protected String getLoggingPrefix() {
-    return super.getLoggingPrefix(CLASS_NAME);
-  }
-
-  
//------------------------------------------------------------------------------------------------
 
   // (none)
 

http://git-wip-us.apache.org/repos/asf/hive/blob/aed21d0b/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 b02e6fd..1149a9d 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
@@ -45,17 +45,8 @@ import 
org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
 public class VectorMapJoinLeftSemiLongOperator extends 
VectorMapJoinLeftSemiGenerateResultOperator {
 
   private static final long serialVersionUID = 1L;
-
-  
//------------------------------------------------------------------------------------------------
-
+  private static final Logger LOG = 
LoggerFactory.getLogger(VectorMapJoinInnerBigOnlyLongOperator.class.getName());
   private static final String CLASS_NAME = 
VectorMapJoinLeftSemiLongOperator.class.getName();
-  private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
-
-  protected String getLoggingPrefix() {
-    return super.getLoggingPrefix(CLASS_NAME);
-  }
-
-  
//------------------------------------------------------------------------------------------------
 
   // (none)
 

http://git-wip-us.apache.org/repos/asf/hive/blob/aed21d0b/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 36b8f3f..e0baebc 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
@@ -40,8 +40,6 @@ import 
org.apache.hadoop.hive.ql.exec.vector.VectorSerializeRow;
 import org.apache.hadoop.hive.serde2.ByteStream.Output;
 import 
org.apache.hadoop.hive.serde2.binarysortable.fast.BinarySortableSerializeWrite;
 
-import com.google.common.base.Preconditions;
-
 /*
  * Specialized class for doing a vectorized map join that is an left semi join 
on Multi-Key
  * using hash set.
@@ -49,17 +47,8 @@ import com.google.common.base.Preconditions;
 public class VectorMapJoinLeftSemiMultiKeyOperator extends 
VectorMapJoinLeftSemiGenerateResultOperator {
 
   private static final long serialVersionUID = 1L;
-
-  
//------------------------------------------------------------------------------------------------
-
+  private static final Logger LOG = 
LoggerFactory.getLogger(VectorMapJoinInnerBigOnlyLongOperator.class.getName());
   private static final String CLASS_NAME = 
VectorMapJoinLeftSemiMultiKeyOperator.class.getName();
-  private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
-
-  protected String getLoggingPrefix() {
-    return super.getLoggingPrefix(CLASS_NAME);
-  }
-
-  
//------------------------------------------------------------------------------------------------
 
   // (none)
 
@@ -124,7 +113,7 @@ public class VectorMapJoinLeftSemiMultiKeyOperator extends 
VectorMapJoinLeftSemi
 
         keyVectorSerializeWrite = new VectorSerializeRow(
                                         new 
BinarySortableSerializeWrite(bigTableKeyColumnMap.length));
-        keyVectorSerializeWrite.init(bigTableKeyTypeInfos, 
bigTableKeyColumnMap);
+        keyVectorSerializeWrite.init(bigTableKeyTypeNames, 
bigTableKeyColumnMap);
 
         currentKeyOutput = new Output();
         saveKeyOutput = new Output();

http://git-wip-us.apache.org/repos/asf/hive/blob/aed21d0b/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 0b3de0a..49e1177 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
@@ -46,17 +46,8 @@ import 
org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr;
 public class VectorMapJoinLeftSemiStringOperator extends 
VectorMapJoinLeftSemiGenerateResultOperator {
 
   private static final long serialVersionUID = 1L;
-
-  
//------------------------------------------------------------------------------------------------
-
+  private static final Logger LOG = 
LoggerFactory.getLogger(VectorMapJoinInnerBigOnlyLongOperator.class.getName());
   private static final String CLASS_NAME = 
VectorMapJoinLeftSemiStringOperator.class.getName();
-  private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
-
-  protected String getLoggingPrefix() {
-    return super.getLoggingPrefix(CLASS_NAME);
-  }
-
-  
//------------------------------------------------------------------------------------------------
 
   // (none)
 

http://git-wip-us.apache.org/repos/asf/hive/blob/aed21d0b/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 72309e8..58bd0ab 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
@@ -45,17 +45,8 @@ import 
org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
  */
 public class VectorMapJoinOuterLongOperator extends 
VectorMapJoinOuterGenerateResultOperator {
   private static final long serialVersionUID = 1L;
-
-  
//------------------------------------------------------------------------------------------------
-
+  private static final Logger LOG = 
LoggerFactory.getLogger(VectorMapJoinOuterLongOperator.class.getName());
   private static final String CLASS_NAME = 
VectorMapJoinOuterLongOperator.class.getName();
-  private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
-
-  protected String getLoggingPrefix() {
-    return super.getLoggingPrefix(CLASS_NAME);
-  }
-
-  
//------------------------------------------------------------------------------------------------
 
   // (none)
 

http://git-wip-us.apache.org/repos/asf/hive/blob/aed21d0b/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 a4fc7d3..7f9afd2 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
@@ -40,8 +40,6 @@ import 
org.apache.hadoop.hive.ql.exec.vector.VectorSerializeRow;
 import org.apache.hadoop.hive.serde2.ByteStream.Output;
 import 
org.apache.hadoop.hive.serde2.binarysortable.fast.BinarySortableSerializeWrite;
 
-import com.google.common.base.Preconditions;
-
 /*
  * Specialized class for doing a vectorized map join that is an outer join on 
Multi-Key
  * using a hash map.
@@ -49,17 +47,8 @@ import com.google.common.base.Preconditions;
 public class VectorMapJoinOuterMultiKeyOperator extends 
VectorMapJoinOuterGenerateResultOperator {
 
   private static final long serialVersionUID = 1L;
-
-  
//------------------------------------------------------------------------------------------------
-
+  private static final Logger LOG = 
LoggerFactory.getLogger(VectorMapJoinOuterMultiKeyOperator.class.getName());
   private static final String CLASS_NAME = 
VectorMapJoinOuterMultiKeyOperator.class.getName();
-  private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
-
-  protected String getLoggingPrefix() {
-    return super.getLoggingPrefix(CLASS_NAME);
-  }
-
-  
//------------------------------------------------------------------------------------------------
 
   // (none)
 
@@ -123,7 +112,7 @@ public class VectorMapJoinOuterMultiKeyOperator extends 
VectorMapJoinOuterGenera
 
         keyVectorSerializeWrite = new VectorSerializeRow(
                         new 
BinarySortableSerializeWrite(bigTableKeyColumnMap.length));
-        keyVectorSerializeWrite.init(bigTableKeyTypeInfos, 
bigTableKeyColumnMap);
+        keyVectorSerializeWrite.init(bigTableKeyTypeNames, 
bigTableKeyColumnMap);
 
         currentKeyOutput = new Output();
         saveKeyOutput = new Output();

http://git-wip-us.apache.org/repos/asf/hive/blob/aed21d0b/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 6e7e5cb..8ed1ed4 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
@@ -45,17 +45,8 @@ import 
org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr;
 public class VectorMapJoinOuterStringOperator extends 
VectorMapJoinOuterGenerateResultOperator {
 
   private static final long serialVersionUID = 1L;
-
-  
//------------------------------------------------------------------------------------------------
-
+  private static final Logger LOG = 
LoggerFactory.getLogger(VectorMapJoinOuterStringOperator.class.getName());
   private static final String CLASS_NAME = 
VectorMapJoinOuterStringOperator.class.getName();
-  private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
-
-  protected String getLoggingPrefix() {
-    return super.getLoggingPrefix(CLASS_NAME);
-  }
-
-  
//------------------------------------------------------------------------------------------------
 
   // (none)
 

http://git-wip-us.apache.org/repos/asf/hive/blob/aed21d0b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastTableContainer.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastTableContainer.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastTableContainer.java
index 069cc9a..9f3b107 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastTableContainer.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastTableContainer.java
@@ -94,7 +94,7 @@ public class VectorMapJoinFastTableContainer implements 
VectorMapJoinTableContai
   private VectorMapJoinFastHashTable createHashTable(int newThreshold) {
 
     boolean isOuterJoin = !desc.isNoOuterJoin();
-    VectorMapJoinDesc vectorDesc = (VectorMapJoinDesc) desc.getVectorDesc();
+    VectorMapJoinDesc vectorDesc = desc.getVectorDesc();
     HashTableImplementationType hashTableImplementationType = 
vectorDesc.hashTableImplementationType();
     HashTableKind hashTableKind = vectorDesc.hashTableKind();
     HashTableKeyType hashTableKeyType = vectorDesc.hashTableKeyType();

http://git-wip-us.apache.org/repos/asf/hive/blob/aed21d0b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/optimized/VectorMapJoinOptimizedCreateHashTable.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/optimized/VectorMapJoinOptimizedCreateHashTable.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/optimized/VectorMapJoinOptimizedCreateHashTable.java
index 111a6d2..f34b1cd 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/optimized/VectorMapJoinOptimizedCreateHashTable.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/optimized/VectorMapJoinOptimizedCreateHashTable.java
@@ -40,7 +40,7 @@ public class VectorMapJoinOptimizedCreateHashTable {
     ReusableGetAdaptor hashMapRowGetter = 
mapJoinTableContainer.createGetter(refKey);
 
     boolean isOuterJoin = !desc.isNoOuterJoin();
-    VectorMapJoinDesc vectorDesc = (VectorMapJoinDesc) desc.getVectorDesc();
+    VectorMapJoinDesc vectorDesc = desc.getVectorDesc();
     HashTableKind hashTableKind = vectorDesc.hashTableKind();
     HashTableKeyType hashTableKeyType = vectorDesc.hashTableKeyType();
     boolean minMaxEnabled = vectorDesc.minMaxEnabled();

http://git-wip-us.apache.org/repos/asf/hive/blob/aed21d0b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkCommonOperator.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkCommonOperator.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkCommonOperator.java
index 42ca4b7..8133aef 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkCommonOperator.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkCommonOperator.java
@@ -160,7 +160,7 @@ public abstract class VectorReduceSinkCommonOperator 
extends TerminalOperator<Re
 
     ReduceSinkDesc desc = (ReduceSinkDesc) conf;
     this.conf = desc;
-    vectorDesc = (VectorReduceSinkDesc) desc.getVectorDesc();
+    vectorDesc = desc.getVectorDesc();
     vectorReduceSinkInfo = vectorDesc.getVectorReduceSinkInfo();
     this.vContext = vContext;
 

http://git-wip-us.apache.org/repos/asf/hive/blob/aed21d0b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/udf/VectorUDFAdaptor.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/udf/VectorUDFAdaptor.java 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/udf/VectorUDFAdaptor.java
index 6806ab4..20cfb89 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/udf/VectorUDFAdaptor.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/udf/VectorUDFAdaptor.java
@@ -374,11 +374,6 @@ public class VectorUDFAdaptor extends VectorExpression {
   }
 
   @Override
-  public String vectorExpressionParameters() {
-    return expr.getExprString();
-  }
-
-  @Override
   public VectorExpressionDescriptor.Descriptor getDescriptor() {
     return (new VectorExpressionDescriptor.Builder()).build();
   }

Reply via email to