in flink-connector-hive/src/main/java/org/apache/flink/table/planner/delegation/hive/copy/HiveParserTypeConverter.java [263:322]
private static TypeInfo convertPrimitiveType(RelDataType rType) {
HiveShim hiveShim = HiveParserUtils.getSessionHiveShim();
switch (rType.getSqlTypeName()) {
case BOOLEAN:
return TypeInfoFactory.booleanTypeInfo;
case TINYINT:
return TypeInfoFactory.byteTypeInfo;
case SMALLINT:
return TypeInfoFactory.shortTypeInfo;
case INTEGER:
return TypeInfoFactory.intTypeInfo;
case BIGINT:
return TypeInfoFactory.longTypeInfo;
case FLOAT:
return TypeInfoFactory.floatTypeInfo;
case DOUBLE:
return TypeInfoFactory.doubleTypeInfo;
case DATE:
return TypeInfoFactory.dateTypeInfo;
case TIMESTAMP:
return TypeInfoFactory.timestampTypeInfo;
case INTERVAL_YEAR:
case INTERVAL_MONTH:
case INTERVAL_YEAR_MONTH:
return hiveShim.getIntervalYearMonthTypeInfo();
case INTERVAL_DAY:
case INTERVAL_DAY_HOUR:
case INTERVAL_DAY_MINUTE:
case INTERVAL_DAY_SECOND:
case INTERVAL_HOUR:
case INTERVAL_HOUR_MINUTE:
case INTERVAL_HOUR_SECOND:
case INTERVAL_MINUTE:
case INTERVAL_MINUTE_SECOND:
case INTERVAL_SECOND:
return hiveShim.getIntervalDayTimeTypeInfo();
case BINARY:
case VARBINARY:
return TypeInfoFactory.binaryTypeInfo;
case DECIMAL:
return TypeInfoFactory.getDecimalTypeInfo(rType.getPrecision(), rType.getScale());
case VARCHAR:
int varcharLength = rType.getPrecision();
if (varcharLength < 1 || varcharLength > HiveVarchar.MAX_VARCHAR_LENGTH) {
return TypeInfoFactory.getPrimitiveTypeInfo(serdeConstants.STRING_TYPE_NAME);
} else {
return TypeInfoFactory.getVarcharTypeInfo(varcharLength);
}
case CHAR:
int charLength = rType.getPrecision();
if (charLength < 1 || charLength > HiveChar.MAX_CHAR_LENGTH) {
return TypeInfoFactory.getPrimitiveTypeInfo(serdeConstants.STRING_TYPE_NAME);
} else {
return TypeInfoFactory.getCharTypeInfo(charLength);
}
case OTHER:
default:
return TypeInfoFactory.voidTypeInfo;
}
}