in flink-doris-connector/src/main/java/org/apache/doris/flink/tools/cdc/mysql/MysqlType.java [84:167]
public static String toDorisType(String type, Integer length, Integer scale) {
switch (type.toUpperCase()) {
case BIT:
case BOOLEAN:
case BOOL:
return DorisType.BOOLEAN;
case TINYINT:
return DorisType.TINYINT;
case TINYINT_UNSIGNED:
case TINYINT_UNSIGNED_ZEROFILL:
case SMALLINT:
return DorisType.SMALLINT;
case SMALLINT_UNSIGNED:
case SMALLINT_UNSIGNED_ZEROFILL:
case INT:
case MEDIUMINT:
case YEAR:
return DorisType.INT;
case INT_UNSIGNED:
case INT_UNSIGNED_ZEROFILL:
case MEDIUMINT_UNSIGNED:
case MEDIUMINT_UNSIGNED_ZEROFILL:
case BIGINT:
return DorisType.BIGINT;
case BIGINT_UNSIGNED:
case BIGINT_UNSIGNED_ZEROFILL:
return DorisType.LARGEINT;
case FLOAT:
case FLOAT_UNSIGNED:
case FLOAT_UNSIGNED_ZEROFILL:
return DorisType.FLOAT;
case REAL:
case REAL_UNSIGNED:
case REAL_UNSIGNED_ZEROFILL:
case DOUBLE:
case DOUBLE_UNSIGNED:
case DOUBLE_UNSIGNED_ZEROFILL:
case DOUBLE_PRECISION:
case DOUBLE_PRECISION_UNSIGNED:
case DOUBLE_PRECISION_UNSIGNED_ZEROFILL:
return DorisType.DOUBLE;
case NUMERIC:
case NUMERIC_UNSIGNED:
case NUMERIC_UNSIGNED_ZEROFILL:
case FIXED:
case FIXED_UNSIGNED:
case FIXED_UNSIGNED_ZEROFILL:
case DECIMAL:
case DECIMAL_UNSIGNED:
case DECIMAL_UNSIGNED_ZEROFILL:
return length != null && length <= 38
? String.format("%s(%s,%s)", DorisType.DECIMAL_V3, length, scale != null && scale >= 0 ? scale : 0)
: DorisType.STRING;
case DATE:
return DorisType.DATE_V2;
case DATETIME:
case TIMESTAMP:
return String.format("%s(%s)", DorisType.DATETIME_V2, Math.min(length == null ? 0 : length, 6));
case CHAR:
Preconditions.checkNotNull(length);
return String.format("%s(%s)", DorisType.CHAR, length);
case VARCHAR:
Preconditions.checkNotNull(length);
return length * 3 > 65533 ? DorisType.STRING : String.format("%s(%s)", DorisType.VARCHAR, length * 3);
case TINYTEXT:
case TEXT:
case MEDIUMTEXT:
case LONGTEXT:
case ENUM:
case TIME:
case TINYBLOB:
case BLOB:
case MEDIUMBLOB:
case LONGBLOB:
case BINARY:
case VARBINARY:
return DorisType.STRING;
case JSON:
return DorisType.JSONB;
default:
throw new UnsupportedOperationException("Unsupported MySQL Type: " + type);
}
}