private Object convertStructRowColumn(
            ColumnVector colVector, int batchIndex, Field field) throws IOException {

      final SettableStructObjectInspector structOI = (SettableStructObjectInspector) field.objectInspector;
      final List<? extends StructField> structFields = structOI.getAllStructFieldRefs();
      final StructComplexTypeHelper structHelper = (StructComplexTypeHelper) field.getComplexHelper();
      final Field[] fields = structHelper.getFields();
      final StructColumnVector structColumnVector = (StructColumnVector) colVector;

      final Object struct = structOI.create();
      for (int i = 0; i < fields.length; i++) {
        final Object fieldObject =
                convertComplexFieldRowColumn(structColumnVector.fields[i], batchIndex, fields[i]);
        structOI.setStructFieldData(struct, structFields.get(i), fieldObject);
      }
      deserializeRead.finishComplexVariableFieldsType();
      return struct;
    }
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