@@ -21,7 +21,9 @@ import java.math.BigInteger
21
21
import java .sql .{Date , Timestamp }
22
22
23
23
import org .apache .spark .SparkFunSuite
24
+ import org .apache .spark .sql .catalyst .expressions .{BoundReference , Literal , NewInstance }
24
25
import org .apache .spark .sql .types ._
26
+ import org .apache .spark .unsafe .types .UTF8String
25
27
26
28
case class PrimitiveData (
27
29
intField : Int ,
@@ -229,4 +231,16 @@ class ScalaReflectionSuite extends SparkFunSuite {
229
231
assert(anyTypes.forall(! _.isPrimitive))
230
232
assert(anyTypes === Seq (classOf [java.lang.Object ], classOf [java.lang.Object ]))
231
233
}
234
+
235
+ test(" SPARK-15062: Get correct serializer for List[_]" ) {
236
+ val list = List (1 , 2 , 3 )
237
+ val serializer = extractorsFor[List [Int ]](BoundReference (
238
+ 0 , ObjectType (list.getClass), nullable = false ))
239
+ assert(serializer.children.size == 2 )
240
+ assert(serializer.children.head.isInstanceOf [Literal ])
241
+ assert(serializer.children.head.asInstanceOf [Literal ].value === UTF8String .fromString(" value" ))
242
+ assert(serializer.children.last.isInstanceOf [NewInstance ])
243
+ assert(serializer.children.last.asInstanceOf [NewInstance ]
244
+ .cls.isInstanceOf [Class [org.apache.spark.sql.catalyst.util.GenericArrayData ]])
245
+ }
232
246
}
0 commit comments