Github user hvanhovell commented on a diff in the pull request:
https://github.com/apache/spark/pull/20980#discussion_r183373874
--- Diff:
sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/ObjectExpressionsSuite.scala
---
@@ -501,6 +502,111 @@ class ObjectExpressionsSuite extends SparkFunSuite
with ExpressionEvalHelper {
InternalRow.fromSeq(Seq(Row(1))),
"java.lang.Integer is not a valid external type for schema of
double")
}
+
+ private def javaMapSerializerFor(
+ keyClazz: Class[_],
+ valueClazz: Class[_])(inputObject: Expression): Expression = {
+
+ def kvSerializerFor(inputObject: Expression, clazz: Class[_]):
Expression = clazz match {
+ case c if c == classOf[java.lang.Integer] =>
+ Invoke(inputObject, "intValue", IntegerType)
+ case c if c == classOf[java.lang.String] =>
+ StaticInvoke(
+ classOf[UTF8String],
+ StringType,
+ "fromString",
+ inputObject :: Nil,
+ returnNullable = false)
+ }
+
+ ExternalMapToCatalyst(
+ inputObject,
+ ObjectType(keyClazz),
+ kvSerializerFor(_, keyClazz),
+ keyNullable = true,
+ ObjectType(valueClazz),
+ kvSerializerFor(_, valueClazz),
+ valueNullable = true
+ )
+ }
+
+ private def scalaMapSerializerFor[T: TypeTag, U: TypeTag](inputObject:
Expression): Expression = {
+ import org.apache.spark.sql.catalyst.ScalaReflection._
+
+ val curId = new java.util.concurrent.atomic.AtomicInteger()
--- End diff --
What is this?
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]