in sdks/java/io/jdbc/src/main/java/org/apache/beam/sdk/io/jdbc/SchemaUtil.java [108:164]
private static BeamFieldConverter jdbcTypeToBeamFieldConverter(JDBCType jdbcType) {
switch (jdbcType) {
case ARRAY:
return beamArrayField();
case BIGINT:
return beamFieldOfType(Schema.FieldType.INT64);
case BINARY:
return beamLogicalField(BINARY.getName(), LogicalTypes.FixedLengthBytes::of);
case BIT:
return beamFieldOfType(LogicalTypes.JDBC_BIT_TYPE);
case BOOLEAN:
return beamFieldOfType(Schema.FieldType.BOOLEAN);
case CHAR:
return beamLogicalField(CHAR.getName(), LogicalTypes.FixedLengthString::of);
case DATE:
return beamFieldOfType(LogicalTypes.JDBC_DATE_TYPE);
case DECIMAL:
return beamFieldOfType(Schema.FieldType.DECIMAL);
case DOUBLE:
return beamFieldOfType(Schema.FieldType.DOUBLE);
case FLOAT:
return beamFieldOfType(LogicalTypes.JDBC_FLOAT_TYPE);
case INTEGER:
return beamFieldOfType(Schema.FieldType.INT32);
case LONGNVARCHAR:
return beamLogicalField(LONGNVARCHAR.getName(), LogicalTypes.VariableLengthString::of);
case LONGVARBINARY:
return beamLogicalField(LONGVARBINARY.getName(), LogicalTypes.VariableLengthBytes::of);
case LONGVARCHAR:
return beamLogicalField(LONGVARCHAR.getName(), LogicalTypes.VariableLengthString::of);
case NCHAR:
return beamLogicalField(NCHAR.getName(), LogicalTypes.FixedLengthString::of);
case NUMERIC:
return beamLogicalNumericField(NUMERIC.getName());
case NVARCHAR:
return beamLogicalField(NVARCHAR.getName(), LogicalTypes.VariableLengthString::of);
case REAL:
return beamFieldOfType(Schema.FieldType.FLOAT);
case SMALLINT:
return beamFieldOfType(Schema.FieldType.INT16);
case TIME:
return beamFieldOfType(LogicalTypes.JDBC_TIME_TYPE);
case TIMESTAMP:
return beamFieldOfType(Schema.FieldType.DATETIME);
case TIMESTAMP_WITH_TIMEZONE:
return beamFieldOfType(LogicalTypes.JDBC_TIMESTAMP_WITH_TIMEZONE_TYPE);
case TINYINT:
return beamFieldOfType(Schema.FieldType.BYTE);
case VARBINARY:
return beamLogicalField(VARBINARY.getName(), LogicalTypes.VariableLengthBytes::of);
case VARCHAR:
return beamLogicalField(VARCHAR.getName(), LogicalTypes.VariableLengthString::of);
default:
throw new UnsupportedOperationException(
"Converting " + jdbcType + " to Beam schema type is not supported");
}
}