in v2/astradb-to-bigquery/src/main/java/com/google/cloud/teleport/v2/astradb/transforms/AstraDbToBigQueryMappingFn.java [113:161]
private static StandardSQLTypeName mapCassandraToBigQueryType(DataType type) {
switch (type.getProtocolCode()) {
case ProtocolConstants.DataType.UUID:
case ProtocolConstants.DataType.VARCHAR:
case ProtocolConstants.DataType.ASCII:
case ProtocolConstants.DataType.TIMEUUID:
case ProtocolConstants.DataType.INET:
return StandardSQLTypeName.STRING;
case ProtocolConstants.DataType.VARINT:
case ProtocolConstants.DataType.DECIMAL:
return StandardSQLTypeName.NUMERIC;
case ProtocolConstants.DataType.COUNTER:
case ProtocolConstants.DataType.BIGINT:
case ProtocolConstants.DataType.TIME:
case ProtocolConstants.DataType.INT:
case ProtocolConstants.DataType.SMALLINT:
case ProtocolConstants.DataType.TINYINT:
case ProtocolConstants.DataType.DURATION:
return StandardSQLTypeName.INT64;
case ProtocolConstants.DataType.DOUBLE:
case ProtocolConstants.DataType.FLOAT:
return StandardSQLTypeName.FLOAT64;
case ProtocolConstants.DataType.DATE:
return StandardSQLTypeName.DATETIME;
case ProtocolConstants.DataType.TIMESTAMP:
return StandardSQLTypeName.TIMESTAMP;
case ProtocolConstants.DataType.BLOB:
return StandardSQLTypeName.BYTES;
case ProtocolConstants.DataType.BOOLEAN:
return StandardSQLTypeName.BOOL;
case ProtocolConstants.DataType.CUSTOM:
if (type instanceof CqlVectorType) {
return StandardSQLTypeName.BYTES;
} else {
throw new IllegalArgumentException("Invalid custom type " + type.asCql(false, false));
}
default:
throw new IllegalArgumentException(
"Cannot Map Cassandra Type " + type.getProtocolCode() + " to Beam Type");
}
}