in fluss-common/src/main/java/com/alibaba/fluss/utils/TypeUtils.java [30:67]
public static Object castFromString(String s, DataType type) {
BinaryString str = BinaryString.fromString(s);
switch (type.getTypeRoot()) {
case CHAR:
case STRING:
return str;
case BOOLEAN:
return BinaryStringUtils.toBoolean(str);
case BINARY:
case BYTES:
return s.getBytes(StandardCharsets.UTF_8);
case DECIMAL:
DecimalType decimalType = (DecimalType) type;
return Decimal.fromBigDecimal(
new BigDecimal(s), decimalType.getPrecision(), decimalType.getScale());
case TINYINT:
return Byte.valueOf(s);
case SMALLINT:
return Short.valueOf(s);
case INTEGER:
return Integer.valueOf(s);
case BIGINT:
return Long.valueOf(s);
case FLOAT:
return Float.parseFloat(s);
case DOUBLE:
return Double.valueOf(s);
case DATE:
return BinaryStringUtils.toDate(str);
case TIME_WITHOUT_TIME_ZONE:
return BinaryStringUtils.toTime(str);
case TIMESTAMP_WITHOUT_TIME_ZONE:
TimestampType timestampType = (TimestampType) type;
return BinaryStringUtils.toTimestampNtz(str, timestampType.getPrecision());
default:
throw new UnsupportedOperationException("Unsupported type " + type);
}
}