diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinGenerateResultOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinGenerateResultOperator.java index 21a01e6..3e8d3e8 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinGenerateResultOperator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinGenerateResultOperator.java @@ -46,6 +46,7 @@ import org.apache.hadoop.hive.serde2.WriteBuffers.ByteSegmentRef; import org.apache.hadoop.hive.serde2.lazybinary.fast.LazyBinaryDeserializeRead; import org.apache.hadoop.hive.serde2.lazybinary.fast.LazyBinarySerializeWrite; +import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category; import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; @@ -423,7 +424,9 @@ private void setupSpillSerDe(VectorizedRowBatch batch) throws HiveException { List noNullsProjectionList = new ArrayList(); for (int i = 0; i < projectionSize; i++) { int projectedColumn = projectedColumns.get(i); - if (batch.cols[projectedColumn] != null) { + if (batch.cols[projectedColumn] != null && + inputObjInspectorsTypeInfos[i].getCategory() == Category.PRIMITIVE) { + // Only columns present in the batch and non-complex types. typeInfoList.add(inputObjInspectorsTypeInfos[i]); noNullsProjectionList.add(projectedColumn); }