From 040ce6550189932b71fc1023ec81ce8236dd675b Mon Sep 17 00:00:00 2001 From: Alex Liu Date: Thu, 23 Jul 2015 15:20:32 -0700 Subject: [PATCH] [SPARK-9269][SQL] Add Set type matching to ArrayConverter --- .../apache/spark/sql/catalyst/CatalystTypeConverters.scala | 1 + .../spark/sql/catalyst/CatalystTypeConvertersSuite.scala | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/CatalystTypeConverters.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/CatalystTypeConverters.scala index bfaee04f33b7..8fb2a7f64339 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/CatalystTypeConverters.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/CatalystTypeConverters.scala @@ -162,6 +162,7 @@ object CatalystTypeConverters { scalaValue match { case a: Array[_] => a.toSeq.map(elementConverter.toCatalyst) case s: Seq[_] => s.map(elementConverter.toCatalyst) + case set: Set[_] => set.toSeq.map(elementConverter.toCatalyst) case i: JavaIterable[_] => val iter = i.iterator var convertedIterable: List[Any] = List() diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/CatalystTypeConvertersSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/CatalystTypeConvertersSuite.scala index df0f04563edc..116013d4969b 100644 --- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/CatalystTypeConvertersSuite.scala +++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/CatalystTypeConvertersSuite.scala @@ -59,4 +59,10 @@ class CatalystTypeConvertersSuite extends SparkFunSuite { test("option handling in createToCatalystConverter") { assert(CatalystTypeConverters.createToCatalystConverter(IntegerType)(Some(123)) === 123) } + + test("Set data in ArrayConverter") { + val convertToCatalyst = CatalystTypeConverters.createToCatalystConverter(ArrayType(StringType, containsNull = true)) + val convertToScala = CatalystTypeConverters.createToScalaConverter(ArrayType(StringType, containsNull = true)) + assert(convertToScala(convertToCatalyst(Some(Set("123", "124")))) === Seq("123", "124")) + } }