in flink-cdc-runtime/src/main/java/org/apache/flink/cdc/runtime/typeutils/DataTypeConverter.java [420:466]
public static Object convert(Object value, DataType dataType) {
if (value == null) {
return null;
}
switch (dataType.getTypeRoot()) {
case BOOLEAN:
return convertToBoolean(value);
case TINYINT:
return convertToByte(value);
case SMALLINT:
return convertToShort(value);
case INTEGER:
return convertToInt(value);
case BIGINT:
return convertToLong(value);
case DATE:
return convertToDate(value);
case TIME_WITHOUT_TIME_ZONE:
return convertToTime(value);
case TIMESTAMP_WITHOUT_TIME_ZONE:
return convertToTimestamp(value);
case TIMESTAMP_WITH_TIME_ZONE:
return convertToZonedTimestampData(value);
case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
return convertToLocalTimeZoneTimestamp(value);
case FLOAT:
return convertToFloat(value);
case DOUBLE:
return convertToDouble(value);
case CHAR:
case VARCHAR:
return convertToString(value);
case BINARY:
case VARBINARY:
return convertToBinary(value);
case DECIMAL:
return convertToDecimal(value);
case ROW:
return value;
case ARRAY:
return convertToArray(value, (ArrayType) dataType);
case MAP:
return convertToMap(value, (MapType) dataType);
default:
throw new UnsupportedOperationException("Unsupported type: " + dataType);
}
}