in seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/SchemaDerivationServiceImpl.java [138:185]
private SeaTunnelDataType<?> stringToDataType(String dataTypeStr) {
dataTypeStr = dataTypeStr.toUpperCase();
switch (dataTypeStr) {
case "STRING":
return BasicType.STRING_TYPE;
case "BOOLEAN":
return BasicType.BOOLEAN_TYPE;
case "TINYINT":
return BasicType.BYTE_TYPE;
case "SMALLINT":
return BasicType.SHORT_TYPE;
case "INT":
return BasicType.INT_TYPE;
case "BIGINT":
return BasicType.LONG_TYPE;
case "FLOAT":
return BasicType.FLOAT_TYPE;
case "DOUBLE":
return BasicType.DOUBLE_TYPE;
case "NULL":
return BasicType.VOID_TYPE;
case "BYTES":
return ArrayType.BYTE_ARRAY_TYPE;
case "DATE":
return LocalTimeType.LOCAL_DATE_TYPE;
case "TIME":
return LocalTimeType.LOCAL_TIME_TYPE;
case "TIMESTAMP":
return LocalTimeType.LOCAL_DATE_TIME_TYPE;
case "DECIMAL":
return new DecimalType(38, 18);
case "ARRAY":
case "MAP":
case "ROW":
case "MULTIPLE_ROW":
return BasicType.STRING_TYPE;
default:
break;
}
Matcher matcher = decimalPattern.matcher(dataTypeStr);
if (matcher.matches()) {
int precision = Integer.parseInt(matcher.group(1));
int scale = Integer.parseInt(matcher.group(2));
return new DecimalType(precision, scale);
}
return BasicType.STRING_TYPE;
}