in driver/src/main/scala/com/datastax/spark/connector/types/ColumnType.scala [107:165]
def fromScalaType(
dataType: Type,
protocolVersion: ProtocolVersion = ProtocolVersion.DEFAULT): ColumnType[_] = {
def unsupportedType() = throw new IllegalArgumentException(s"Unsupported type: $dataType")
val pvGt4 = (protocolVersion.getCode >= V4.getCode)
// can't use a HashMap, because there are more than one different Type objects for "real type":
if (dataType =:= typeOf[Int]) IntType
else if (dataType =:= typeOf[java.lang.Integer]) IntType
else if (dataType =:= typeOf[Long]) BigIntType
else if (dataType =:= typeOf[java.lang.Long]) BigIntType
else if (dataType =:= typeOf[Short]) if (pvGt4) SmallIntType else IntType
else if (dataType =:= typeOf[java.lang.Short]) if (pvGt4) SmallIntType else IntType
else if (dataType =:= typeOf[Byte]) if (pvGt4) TinyIntType else IntType
else if (dataType =:= typeOf[java.lang.Byte]) if (pvGt4) TinyIntType else IntType
else if (dataType =:= typeOf[Float]) FloatType
else if (dataType =:= typeOf[java.lang.Float]) FloatType
else if (dataType =:= typeOf[Double]) DoubleType
else if (dataType =:= typeOf[java.lang.Double]) DoubleType
else if (dataType =:= typeOf[BigInt]) VarIntType
else if (dataType =:= typeOf[java.math.BigInteger]) VarIntType
else if (dataType =:= typeOf[BigDecimal]) DecimalType
else if (dataType =:= typeOf[java.math.BigDecimal]) DecimalType
else if (dataType =:= typeOf[Boolean]) BooleanType
else if (dataType =:= typeOf[java.lang.Boolean]) BooleanType
else if (dataType =:= typeOf[String]) VarCharType
else if (dataType =:= typeOf[InetAddress]) InetType
else if (dataType =:= typeOf[java.sql.Timestamp]) TimestampType
else if (dataType =:= typeOf[Date]) TimestampType
else if (dataType =:= typeOf[java.sql.Date]) if (pvGt4) DateType else TimestampType
else if (dataType =:= typeOf[UUID]) UUIDType
else if (dataType =:= typeOf[ByteBuffer]) BlobType
else if (dataType =:= typeOf[Array[Byte]]) BlobType
else {
dataType match {
case TypeRef(_, symbol, List(arg)) =>
val argType = fromScalaType(arg)
if (symbol == Symbols.OptionSymbol)
argType
else if (Symbols.ListSymbols contains symbol)
ListType(argType, isFrozen = false)
else if (Symbols.SetSymbols contains symbol)
SetType(argType, isFrozen = false)
else
unsupportedType()
case TypeRef(_, symbol, List(k, v)) =>
val keyType = fromScalaType(k)
val valueType = fromScalaType(v)
if (Symbols.MapSymbols contains symbol)
MapType(keyType, valueType, isFrozen = false)
else
unsupportedType()
case _ =>
unsupportedType()
}
}
}