in cassandra-analytics-core/src/main/java/org/apache/cassandra/spark/bulkwriter/SqlToCqlTypeConverter.java [114:185]
public static Converter<?> getConverter(CqlField.CqlType cqlType)
{
String cqlName = cqlType.name().toLowerCase();
switch (cqlName)
{
case CUSTOM:
return determineCustomConvert((CqlField.CqlCustom) cqlType);
case ASCII:
return NO_OP_CONVERTER;
case BIGINT:
return LONG_CONVERTER;
case BLOB:
return BYTES_CONVERTER;
case BOOLEAN:
return NO_OP_CONVERTER;
case COUNTER:
return NO_OP_CONVERTER;
case DECIMAL:
return BIG_DECIMAL_CONVERTER;
case DOUBLE:
return NO_OP_CONVERTER;
case DURATION:
return DURATION_CONVERTER;
case FLOAT:
return NO_OP_CONVERTER;
case FROZEN:
assert cqlType instanceof CqlField.CqlFrozen;
CqlField.CqlFrozen frozen = (CqlField.CqlFrozen) cqlType;
return getConverter(frozen.inner());
case INT:
return INTEGER_CONVERTER;
case TEXT:
return NO_OP_CONVERTER;
case TIMESTAMP:
return TIMESTAMP_CONVERTER;
case TIME:
return TIME_CONVERTER;
case UUID:
return UUID_CONVERTER;
case VARCHAR:
return NO_OP_CONVERTER;
case VARINT:
return BIG_INTEGER_CONVERTER;
case TIMEUUID:
return TIME_UUID_CONVERTER;
case INET:
return INET_ADDRESS_CONVERTER;
case DATE:
return DATE_CONVERTER;
case SMALLINT:
return NO_OP_CONVERTER;
case TINYINT:
return NO_OP_CONVERTER;
case LIST:
return new ListConverter<>((CqlField.CqlCollection) cqlType);
case MAP:
assert cqlType instanceof CqlField.CqlMap;
return new MapConverter<>((CqlField.CqlMap) cqlType);
case SET:
return new SetConverter<>((CqlField.CqlCollection) cqlType);
case TUPLE:
return NO_OP_CONVERTER;
default:
if (cqlType.internalType() == CqlField.CqlType.InternalType.Udt)
{
assert cqlType instanceof CqlField.CqlUdt;
return new UdtConverter((CqlField.CqlUdt) cqlType);
}
LOGGER.warn("Unable to match type={}. Defaulting to NoOp Converter", cqlName);
return NO_OP_CONVERTER;
}
}