aboutsummaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorReynold Xin <rxin@databricks.com>2017-04-11 11:12:31 -0700
committerReynold Xin <rxin@databricks.com>2017-04-11 11:12:31 -0700
commit123b4fbbc331f116b45f11b9f7ecbe0b0575323d (patch)
treea39d2ae76e76b5b78a32b2e9f1126a9bf0b78532 /sql
parentcd91f967145909852d9af09b10b80f86ed05edb5 (diff)
downloadspark-123b4fbbc331f116b45f11b9f7ecbe0b0575323d.tar.gz
spark-123b4fbbc331f116b45f11b9f7ecbe0b0575323d.tar.bz2
spark-123b4fbbc331f116b45f11b9f7ecbe0b0575323d.zip
[SPARK-20289][SQL] Use StaticInvoke to box primitive types
## What changes were proposed in this pull request? Dataset typed API currently uses NewInstance to box primitive types (i.e. calling the constructor). Instead, it'd be slightly more idiomatic in Java to use PrimitiveType.valueOf, which can be invoked using StaticInvoke expression. ## How was this patch tested? The change should be covered by existing tests for Dataset encoders. Author: Reynold Xin <rxin@databricks.com> Closes #17604 from rxin/SPARK-20289.
Diffstat (limited to 'sql')
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/JavaTypeInference.scala27
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/ScalaReflection.scala14
2 files changed, 20 insertions, 21 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/JavaTypeInference.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/JavaTypeInference.scala
index 9d4617dda5..86a73a319e 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/JavaTypeInference.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/JavaTypeInference.scala
@@ -204,20 +204,19 @@ object JavaTypeInference {
typeToken.getRawType match {
case c if !inferExternalType(c).isInstanceOf[ObjectType] => getPath
- case c if c == classOf[java.lang.Short] =>
- NewInstance(c, getPath :: Nil, ObjectType(c))
- case c if c == classOf[java.lang.Integer] =>
- NewInstance(c, getPath :: Nil, ObjectType(c))
- case c if c == classOf[java.lang.Long] =>
- NewInstance(c, getPath :: Nil, ObjectType(c))
- case c if c == classOf[java.lang.Double] =>
- NewInstance(c, getPath :: Nil, ObjectType(c))
- case c if c == classOf[java.lang.Byte] =>
- NewInstance(c, getPath :: Nil, ObjectType(c))
- case c if c == classOf[java.lang.Float] =>
- NewInstance(c, getPath :: Nil, ObjectType(c))
- case c if c == classOf[java.lang.Boolean] =>
- NewInstance(c, getPath :: Nil, ObjectType(c))
+ case c if c == classOf[java.lang.Short] ||
+ c == classOf[java.lang.Integer] ||
+ c == classOf[java.lang.Long] ||
+ c == classOf[java.lang.Double] ||
+ c == classOf[java.lang.Float] ||
+ c == classOf[java.lang.Byte] ||
+ c == classOf[java.lang.Boolean] =>
+ StaticInvoke(
+ c,
+ ObjectType(c),
+ "valueOf",
+ getPath :: Nil,
+ propagateNull = true)
case c if c == classOf[java.sql.Date] =>
StaticInvoke(
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/ScalaReflection.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/ScalaReflection.scala
index 0c5a818f54..82710a2a18 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/ScalaReflection.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/ScalaReflection.scala
@@ -204,37 +204,37 @@ object ScalaReflection extends ScalaReflection {
case t if t <:< localTypeOf[java.lang.Integer] =>
val boxedType = classOf[java.lang.Integer]
val objectType = ObjectType(boxedType)
- NewInstance(boxedType, getPath :: Nil, objectType)
+ StaticInvoke(boxedType, objectType, "valueOf", getPath :: Nil, propagateNull = true)
case t if t <:< localTypeOf[java.lang.Long] =>
val boxedType = classOf[java.lang.Long]
val objectType = ObjectType(boxedType)
- NewInstance(boxedType, getPath :: Nil, objectType)
+ StaticInvoke(boxedType, objectType, "valueOf", getPath :: Nil, propagateNull = true)
case t if t <:< localTypeOf[java.lang.Double] =>
val boxedType = classOf[java.lang.Double]
val objectType = ObjectType(boxedType)
- NewInstance(boxedType, getPath :: Nil, objectType)
+ StaticInvoke(boxedType, objectType, "valueOf", getPath :: Nil, propagateNull = true)
case t if t <:< localTypeOf[java.lang.Float] =>
val boxedType = classOf[java.lang.Float]
val objectType = ObjectType(boxedType)
- NewInstance(boxedType, getPath :: Nil, objectType)
+ StaticInvoke(boxedType, objectType, "valueOf", getPath :: Nil, propagateNull = true)
case t if t <:< localTypeOf[java.lang.Short] =>
val boxedType = classOf[java.lang.Short]
val objectType = ObjectType(boxedType)
- NewInstance(boxedType, getPath :: Nil, objectType)
+ StaticInvoke(boxedType, objectType, "valueOf", getPath :: Nil, propagateNull = true)
case t if t <:< localTypeOf[java.lang.Byte] =>
val boxedType = classOf[java.lang.Byte]
val objectType = ObjectType(boxedType)
- NewInstance(boxedType, getPath :: Nil, objectType)
+ StaticInvoke(boxedType, objectType, "valueOf", getPath :: Nil, propagateNull = true)
case t if t <:< localTypeOf[java.lang.Boolean] =>
val boxedType = classOf[java.lang.Boolean]
val objectType = ObjectType(boxedType)
- NewInstance(boxedType, getPath :: Nil, objectType)
+ StaticInvoke(boxedType, objectType, "valueOf", getPath :: Nil, propagateNull = true)
case t if t <:< localTypeOf[java.sql.Date] =>
StaticInvoke(