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();
}