From d65dc383a5a5be74ae9fde84510508527559a546 Mon Sep 17 00:00:00 2001 From: acustiq Date: Wed, 5 Feb 2020 22:29:27 -0500 Subject: [PATCH] Allow null UDTs --- .../connector/mapper/MappedToGettableDataConverter.scala | 2 +- .../mapper/MappedToGettableDataConverterSpec.scala | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) 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 {