private String convertLogicalType(Type type, boolean inferBinaryAsString) throws SerDeException {
    LogicalTypeAnnotation lType = type.getLogicalTypeAnnotation();
    if (lType instanceof IntLogicalTypeAnnotation) {
      return convertParquetIntLogicalType(type);
    } else if (lType instanceof StringLogicalTypeAnnotation) {
      return serdeConstants.STRING_TYPE_NAME;
    } else if (lType instanceof DecimalLogicalTypeAnnotation) {
      DecimalLogicalTypeAnnotation dType = (DecimalLogicalTypeAnnotation) lType;
      return createDecimalType(dType.getPrecision(), dType.getScale());
    } else if (lType instanceof MapLogicalTypeAnnotation) {
      return convertParquetMapLogicalTypeAnnotation(type, inferBinaryAsString);
    } else if (lType instanceof ListLogicalTypeAnnotation) {
      return convertParquetListLogicalTypeAnnotation(type, inferBinaryAsString);
    } else if (lType instanceof DateLogicalTypeAnnotation) {
      // assuming 32 bit int
      return serdeConstants.DATE_TYPE_NAME;
    }
    throw new SerDeException(ErrorMsg.PARQUET_UNHANDLED_TYPE.getErrorCodedMsg(lType.toString()));
  }
Given a complete struct type info and pruned paths containing selected fields
from the type info, return a pruned struct type info only with the selected fields.

For instance, if 'originalTypeInfo' is: s:struct<a:struct<b:int, c:boolean>, d:string>
  and 'prunedPaths' is ["s.a.b,s.d"], then the result will be:
  s:struct<a:struct<b:int>, d:string>

@param originalTypeInfo the complete struct type info
@param prunedPaths a string representing the pruned paths, separated by ','
@return the pruned struct type info
ql/src/java/org/apache/hadoop/hive/ql/io/parquet/serde/ParquetHiveSerDe.java