diff --git a/driver/src/main/scala/com/datastax/spark/connector/mapper/MappedToGettableDataConverter.scala b/driver/src/main/scala/com/datastax/spark/connector/mapper/MappedToGettableDataConverter.scala index 135f65399..82a0b32dd 100644 --- a/driver/src/main/scala/com/datastax/spark/connector/mapper/MappedToGettableDataConverter.scala +++ b/driver/src/main/scala/com/datastax/spark/connector/mapper/MappedToGettableDataConverter.scala @@ -208,7 +208,7 @@ object MappedToGettableDataConverter extends StrictLogging { for (i <- columnValues.indices) columnValues(i) = converters(i).convert(columnValues(i)) struct.newInstance(columnValues: _*) - case None => + case _ => null.asInstanceOf[struct.ValueRepr] } } diff --git a/driver/src/test/scala/com/datastax/spark/connector/mapper/MappedToGettableDataConverterSpec.scala b/driver/src/test/scala/com/datastax/spark/connector/mapper/MappedToGettableDataConverterSpec.scala index ab3cc9994..8822da320 100644 --- a/driver/src/test/scala/com/datastax/spark/connector/mapper/MappedToGettableDataConverterSpec.scala +++ b/driver/src/test/scala/com/datastax/spark/connector/mapper/MappedToGettableDataConverterSpec.scala @@ -143,6 +143,13 @@ class MappedToGettableDataConverterSpec extends FlatSpec with Matchers { row.isNullAt(1) shouldEqual true } + it should "convert null UDTs to null" in { + val userTable = newTable(loginColumn, passwordColumn) + val converter = MappedToGettableDataConverter[UserWithOption](userTable, userTable.columnRefs) + val row = converter.convert(null) + row shouldEqual null + } + case class UserWithNestedOption(login: String, address: Option[Address]) it should "convert None case class to null" in {