private String convertParquetIntLogicalType(Type parquetType) throws SerDeException {
    IntLogicalTypeAnnotation intLogicalType = (IntLogicalTypeAnnotation) parquetType.getLogicalTypeAnnotation();
    PrimitiveType primitiveType = parquetType.asPrimitiveType();
    // check to see if primitive type handling is implemented
    switch (primitiveType.getPrimitiveTypeName()) {
      case INT32:
      case INT64:
      break;
      default:
      throw new SerDeException(ErrorMsg.PARQUET_UNHANDLED_TYPE.getErrorCodedMsg(intLogicalType.toString()));
    }

    if (!intLogicalType.isSigned()) {
      // signed types are not supported
      throw new SerDeException(ErrorMsg.PARQUET_UNHANDLED_TYPE.getErrorCodedMsg(intLogicalType.toString()));
    }

    switch (intLogicalType.getBitWidth()) {
      case 8: return serdeConstants.TINYINT_TYPE_NAME;
      case 16: return serdeConstants.SMALLINT_TYPE_NAME;
      case 32: return serdeConstants.INT_TYPE_NAME;
      case 64: return serdeConstants.BIGINT_TYPE_NAME;
    }

    throw new SerDeException(ErrorMsg.PARQUET_UNHANDLED_TYPE.getErrorCodedMsg(intLogicalType.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