public Column convert()

in seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/snowflake/SnowflakeTypeConverter.java [95:185]


    public Column convert(BasicTypeDefine typeDefine) {
        PhysicalColumn.PhysicalColumnBuilder builder =
                PhysicalColumn.builder()
                        .name(typeDefine.getName())
                        .sourceType(typeDefine.getColumnType())
                        .nullable(typeDefine.isNullable())
                        .defaultValue(typeDefine.getDefaultValue())
                        .comment(typeDefine.getComment());
        String dataType = typeDefine.getDataType().toUpperCase();
        switch (dataType) {
            case SNOWFLAKE_SMALLINT:
            case SNOWFLAKE_TINYINT:
            case SNOWFLAKE_BYTEINT:
                builder.dataType(BasicType.SHORT_TYPE);
                break;
            case SNOWFLAKE_INTEGER:
            case SNOWFLAKE_INT:
                builder.dataType(BasicType.INT_TYPE);
                break;
            case SNOWFLAKE_BIGINT:
                builder.dataType(BasicType.LONG_TYPE);
                break;
            case SNOWFLAKE_DECIMAL:
            case SNOWFLAKE_NUMERIC:
            case SNOWFLAKE_NUMBER:
                builder.dataType(
                        new DecimalType(
                                Math.toIntExact(
                                        typeDefine.getPrecision() == null
                                                ? DEFAULT_PRECISION
                                                : typeDefine.getPrecision()),
                                typeDefine.getScale() == null
                                        ? DEFAULT_SCALE
                                        : typeDefine.getScale()));
                break;
            case SNOWFLAKE_REAL:
            case SNOWFLAKE_FLOAT4:
                builder.dataType(BasicType.FLOAT_TYPE);
                break;
            case SNOWFLAKE_DOUBLE:
            case SNOWFLAKE_DOUBLE_PRECISION:
            case SNOWFLAKE_FLOAT8:
            case SNOWFLAKE_FLOAT:
                builder.dataType(BasicType.DOUBLE_TYPE);
                break;
            case SNOWFLAKE_BOOLEAN:
                builder.dataType(BasicType.BOOLEAN_TYPE);
                break;
            case SNOWFLAKE_CHAR:
            case SNOWFLAKE_CHARACTER:
            case SNOWFLAKE_VARCHAR:
            case SNOWFLAKE_STRING:
                builder.dataType(BasicType.STRING_TYPE);
                builder.columnLength(TypeDefineUtils.charTo4ByteLength(typeDefine.getLength()));
                break;
            case SNOWFLAKE_TEXT:
            case SNOWFLAKE_VARIANT:
            case SNOWFLAKE_OBJECT:
                builder.dataType(BasicType.STRING_TYPE);
                builder.columnLength(typeDefine.getLength());
                break;
            case SNOWFLAKE_GEOGRAPHY:
            case SNOWFLAKE_GEOMETRY:
                builder.dataType(BasicType.STRING_TYPE);
                builder.columnLength(typeDefine.getLength());
                break;
            case SNOWFLAKE_BINARY:
            case SNOWFLAKE_VARBINARY:
                builder.dataType(PrimitiveByteArrayType.INSTANCE);
                break;
            case SNOWFLAKE_DATE:
                builder.dataType(LocalTimeType.LOCAL_DATE_TYPE);
                break;
            case SNOWFLAKE_TIME:
                builder.dataType(LocalTimeType.LOCAL_TIME_TYPE);
                builder.scale(9);
                break;
            case SNOWFLAKE_DATE_TIME:
            case SNOWFLAKE_TIMESTAMP:
            case SNOWFLAKE_TIMESTAMP_LTZ:
            case SNOWFLAKE_TIMESTAMP_NTZ:
            case SNOWFLAKE_TIMESTAMP_TZ:
                builder.dataType(LocalTimeType.LOCAL_DATE_TIME_TYPE);
                builder.scale(9);
                break;
            default:
                throw CommonError.convertToSeaTunnelTypeError(
                        DatabaseIdentifier.SNOWFLAKE, dataType, typeDefine.getName());
        }
        return builder.build();
    }