public static String toDorisType()

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


    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, Math.min(scale, 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:
            case XMLTYPE:
                return DorisType.STRING;
            case BFILE:
            case BINARY_FLOAT:
            case BINARY_DOUBLE:
            default:
                throw new UnsupportedOperationException("Unsupported Oracle Type: " + oracleType);
        }
    }