public static Column convert()

in seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/utils/JdbcColumnConverter.java [118:219]


    public static Column convert(
            String columnName,
            int jdbcType,
            String nativeType,
            int isNullable,
            int precision,
            int scale,
            String comment)
            throws SQLException {
        int columnLength = precision;
        long longColumnLength = precision;
        long bitLength = 0;
        SeaTunnelDataType seaTunnelType;

        switch (jdbcType) {
            case BOOLEAN:
                seaTunnelType = BasicType.BOOLEAN_TYPE;
                break;
            case BIT:
                if (precision == 1) {
                    seaTunnelType = BasicType.BOOLEAN_TYPE;
                } else {
                    seaTunnelType = PrimitiveByteArrayType.INSTANCE;
                }
                break;
            case TINYINT:
                seaTunnelType = BasicType.BYTE_TYPE;
                break;
            case SMALLINT:
                seaTunnelType = BasicType.SHORT_TYPE;
                break;
            case INTEGER:
                seaTunnelType = BasicType.INT_TYPE;
                break;
            case BIGINT:
                seaTunnelType = BasicType.LONG_TYPE;
                break;
            case FLOAT:
                seaTunnelType = BasicType.FLOAT_TYPE;
                break;
            case REAL:
                seaTunnelType = BasicType.DOUBLE_TYPE;
                break;
            case DOUBLE:
                seaTunnelType = BasicType.DOUBLE_TYPE;
                break;
            case NUMERIC:
            case DECIMAL:
                if (scale == 0) {
                    seaTunnelType = BasicType.LONG_TYPE;
                } else {
                    seaTunnelType = new DecimalType(precision, scale);
                }
                break;
            case CHAR:
            case VARCHAR:
            case LONGVARCHAR:
            case NCHAR:
            case NVARCHAR:
            case LONGNVARCHAR:
            case CLOB:
            case NCLOB:
                seaTunnelType = BasicType.STRING_TYPE;
                columnLength = precision * 3;
                longColumnLength = precision * 3;
                break;
            case DATE:
                seaTunnelType = LocalTimeType.LOCAL_DATE_TYPE;
                break;
            case TIME:
            case TIME_WITH_TIMEZONE:
                seaTunnelType = LocalTimeType.LOCAL_TIME_TYPE;
                break;
            case TIMESTAMP:
            case TIMESTAMP_WITH_TIMEZONE:
                seaTunnelType = LocalTimeType.LOCAL_DATE_TIME_TYPE;
                break;
            case BINARY:
            case VARBINARY:
            case LONGVARBINARY:
            case BLOB:
                seaTunnelType = PrimitiveByteArrayType.INSTANCE;
                bitLength = precision * 8;
                break;
            default:
                throw new UnsupportedOperationException("Unsupported JDBC type: " + jdbcType);
        }

        return PhysicalColumn.of(
                columnName,
                seaTunnelType,
                columnLength,
                isNullable != ResultSetMetaData.columnNoNulls,
                null,
                comment,
                nativeType,
                false,
                false,
                bitLength,
                Collections.emptyMap(),
                longColumnLength);
    }