Repository: spark
Updated Branches:
  refs/heads/master 2f1d0320c -> 1a3966472


[SPARK-14696][SQL] Add implicit encoders for boxed primitive types

## What changes were proposed in this pull request?
We currently only have implicit encoders for scala primitive types. We should 
also add implicit encoders for boxed primitives. Otherwise, the following code 
would not have an encoder:

```scala
sqlContext.range(1000).map { i => i }
```

## How was this patch tested?
Added a unit test case for this.

Author: Reynold Xin <[email protected]>

Closes #12466 from rxin/SPARK-14696.


Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/1a396647
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/1a396647
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/1a396647

Branch: refs/heads/master
Commit: 1a3966472c78794252057d47ff0cffe4329a32f3
Parents: 2f1d032
Author: Reynold Xin <[email protected]>
Authored: Mon Apr 18 17:03:15 2016 +0800
Committer: Wenchen Fan <[email protected]>
Committed: Mon Apr 18 17:03:15 2016 +0800

----------------------------------------------------------------------
 .../org/apache/spark/sql/SQLImplicits.scala     | 23 ++++++++++++++++++++
 .../org/apache/spark/sql/DatasetSuite.scala     |  4 ++++
 2 files changed, 27 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/spark/blob/1a396647/sql/core/src/main/scala/org/apache/spark/sql/SQLImplicits.scala
----------------------------------------------------------------------
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/SQLImplicits.scala 
b/sql/core/src/main/scala/org/apache/spark/sql/SQLImplicits.scala
index ad69e23..f423e7d 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/SQLImplicits.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/SQLImplicits.scala
@@ -72,6 +72,29 @@ abstract class SQLImplicits {
   /** @since 1.6.0 */
   implicit def newStringEncoder: Encoder[String] = Encoders.STRING
 
+  // Boxed primitives
+
+  /** @since 2.0.0 */
+  implicit def newBoxedIntEncoder: Encoder[java.lang.Integer] = Encoders.INT
+
+  /** @since 2.0.0 */
+  implicit def newBoxedLongEncoder: Encoder[java.lang.Long] = Encoders.LONG
+
+  /** @since 2.0.0 */
+  implicit def newBoxedDoubleEncoder: Encoder[java.lang.Double] = 
Encoders.DOUBLE
+
+  /** @since 2.0.0 */
+  implicit def newBoxedFloatEncoder: Encoder[java.lang.Float] = Encoders.FLOAT
+
+  /** @since 2.0.0 */
+  implicit def newBoxedByteEncoder: Encoder[java.lang.Byte] = Encoders.BYTE
+
+  /** @since 2.0.0 */
+  implicit def newBoxedShortEncoder: Encoder[java.lang.Short] = Encoders.SHORT
+
+  /** @since 2.0.0 */
+  implicit def newBoxedBooleanEncoder: Encoder[java.lang.Boolean] = 
Encoders.BOOLEAN
+
   // Seqs
 
   /** @since 1.6.1 */

http://git-wip-us.apache.org/repos/asf/spark/blob/1a396647/sql/core/src/test/scala/org/apache/spark/sql/DatasetSuite.scala
----------------------------------------------------------------------
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/DatasetSuite.scala 
b/sql/core/src/test/scala/org/apache/spark/sql/DatasetSuite.scala
index d074535..2a1867f 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/DatasetSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/DatasetSuite.scala
@@ -471,6 +471,10 @@ class DatasetSuite extends QueryTest with SharedSQLContext 
{
         (JavaData(2), JavaData(2))))
   }
 
+  test("SPARK-14696: implicit encoders for boxed types") {
+    assert(sqlContext.range(1).map { i => i : java.lang.Long }.head == 0L)
+  }
+
   test("SPARK-11894: Incorrect results are returned when using null") {
     val nullInt = null.asInstanceOf[java.lang.Integer]
     val ds1 = Seq((nullInt, "1"), (new java.lang.Integer(22), "2")).toDS()


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to