public static String toDorisType()

in flink-doris-connector/src/main/java/org/apache/doris/flink/tools/cdc/oracle/OracleType.java [44:102]


    public static String toDorisType(String oracleType, Integer precision, Integer scale) {
        oracleType = oracleType.toUpperCase();
        if(oracleType.startsWith(INTERVAL)){
            oracleType = oracleType.substring(0, 8);
        } else if (oracleType.startsWith(TIMESTAMP)) {
            return String.format("%s(%s)", DorisType.DATETIME_V2, 6);
        }
        switch (oracleType){
            case NUMBER:
                if (scale <= 0) {
                    precision -= scale;
                    if (precision < 3) {
                        return DorisType.TINYINT;
                    } else if (precision < 5) {
                        return DorisType.SMALLINT;
                    } else if (precision < 10) {
                        return DorisType.INT;
                    } else if (precision < 19) {
                        return DorisType.BIGINT;
                    } else if (precision < 39) {
                        // LARGEINT supports up to 38 numbers.
                        return DorisType.LARGEINT;
                    } else {
                        return DorisType.STRING;
                    }
                }
                // scale > 0
                if (precision < scale) {
                    precision = scale;
                }
                return precision != null && precision <= 38
                        ? String.format("%s(%s,%s)", DorisType.DECIMAL_V3, precision, scale != null && scale >= 0 ? scale : 0)
                        : DorisType.STRING;
            case FLOAT:
                return DorisType.DOUBLE;
            case DATE:
                // can save date and time with second precision
                return DorisType.DATETIME_V2;
            case CHAR:
            case VARCHAR2:
            case NCHAR:
            case NVARCHAR2:
                Preconditions.checkNotNull(precision);
                return precision * 3 > 65533 ? DorisType.STRING : String.format("%s(%s)", DorisType.VARCHAR, precision * 3);
            case LONG:
            case RAW:
            case LONG_RAW:
            case INTERVAL:
            case BLOB:
            case CLOB:
            case NCLOB:
                return DorisType.STRING;
            case BFILE:
            case BINARY_FLOAT:
            case BINARY_DOUBLE:
            default:
                throw new UnsupportedOperationException("Unsupported Oracle Type: " + oracleType);
        }
    }