private void storeUnionRowColumn(ColumnVector colVector,
                                     Field field, int batchIndex, boolean canRetainByteRef) throws IOException {

      deserializeRead.readComplexField();

      // The read field of the Union gives us its tag.
      final int tag = deserializeRead.currentInt;

      final UnionColumnVector unionColVector = (UnionColumnVector) colVector;
      final ColumnVector[] colVectorFields = unionColVector.fields;
      final UnionComplexTypeHelper unionHelper = (UnionComplexTypeHelper) field.getComplexHelper();

      unionColVector.isNull[batchIndex] = false;
      unionColVector.tags[batchIndex] = tag;

      storeComplexFieldRowColumn(
              colVectorFields[tag],
              unionHelper.getFields()[tag],
              batchIndex,
              canRetainByteRef);
      deserializeRead.finishComplexVariableFieldsType();
    }
Initialize for converting the source data type that are going to be read with the
DeserializedRead interface passed to the constructor to the target data types desired in
the VectorizedRowBatch.

No projection -- using the column range 0 .. columnCount-1

@param targetTypeInfos
@param columnsToIncludeTruncated
@throws HiveException
ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorDeserializeRow.java