public LogicalType handleDialectSqlType(LogicalType type, String dialectType) {
        if (StringUtils.isBlank(dialectType)) {
            return type;
        }
        Matcher matcher = DIALECT_SQL_TYPE_PATTERN.matcher(dialectType);
        if (!matcher.matches()) {
            return type;
        }
        String[] items = matcher.group(2).split(",");
        if (type instanceof DecimalType) {
            int precision;
            int scale = DEFAULT_DECIMAL_SCALE;
            precision = Integer.parseInt(items[0].trim());
            if (precision < DecimalType.MIN_PRECISION || precision > DecimalType.MAX_PRECISION) {
                precision = DEFAULT_DECIMAL_PRECISION;
            }
            if (items.length == 2) {
                scale = Integer.parseInt(items[1].trim());
                if (scale < DecimalType.MIN_SCALE || scale > precision) {
                    scale = DEFAULT_DECIMAL_SCALE;
                }
            }
            return new DecimalType(precision, scale);
        } else if (type instanceof CharType) {
            int length = Integer.parseInt(items[0].trim());
            if (length <= 0) {
                length = DEFAULT_CHAR_LENGTH;
            }
            return new CharType(length);
        } else if (type instanceof VarCharType) {
            int length = Integer.parseInt(items[0].trim());
            if (length <= 0) {
                length = Integer.MAX_VALUE;
            }
            return new VarCharType(length);
        } else if (type instanceof VarBinaryType) {
            int length = Integer.parseInt(items[0].trim());
            if (length <= 0) {
                length = Integer.MAX_VALUE;
            }
            return new VarBinaryType(length);
        } else if (type instanceof BinaryType) {
            int length = Integer.parseInt(items[0].trim());
            if (length <= 0) {
                length = 1;
            }
            return new BinaryType(length);
        } else if ("TINYINT(1)".equalsIgnoreCase(matcher.group(0))) {
            return new TinyIntType();
        } else if ("BIGINT UNSIGNED".equalsIgnoreCase(matcher.group(1))) {
            return new DecimalType(20, 0);
        } else if ("BIGINT UNSIGNED ZEROFILL".equalsIgnoreCase(matcher.group(1))) {
            return new DecimalType(20, 0);
        } else {
            return type;
        }
    }
set precision and scale for decimal and other types

@param type original flink type
@param dialectType database dialect type
@return flink type revised according to dialect type
inlong-sort/sort-flink/base/src/main/java/org/apache/inlong/sort/base/format/JsonDynamicSchemaFormat.java