You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by hv...@apache.org on 2018/04/18 22:05:52 UTC

spark git commit: [SPARK-23875][SQL][FOLLOWUP] Add IndexedSeq wrapper for ArrayData

Repository: spark
Updated Branches:
  refs/heads/master f09a9e941 -> a9066478f


[SPARK-23875][SQL][FOLLOWUP] Add IndexedSeq wrapper for ArrayData

## What changes were proposed in this pull request?

Use specified accessor in `ArrayData.foreach` and `toArray`.

## How was this patch tested?

Existing tests.

Author: Liang-Chi Hsieh <vi...@gmail.com>

Closes #21099 from viirya/SPARK-23875-followup.


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

Branch: refs/heads/master
Commit: a9066478f6d98c3ae634c3bb9b09ee20bd60e111
Parents: f09a9e9
Author: Liang-Chi Hsieh <vi...@gmail.com>
Authored: Thu Apr 19 00:05:47 2018 +0200
Committer: Herman van Hovell <hv...@databricks.com>
Committed: Thu Apr 19 00:05:47 2018 +0200

----------------------------------------------------------------------
 .../scala/org/apache/spark/sql/catalyst/util/ArrayData.scala  | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/spark/blob/a9066478/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/ArrayData.scala
----------------------------------------------------------------------
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/ArrayData.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/ArrayData.scala
index 2cf59d5..104b428 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/ArrayData.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/ArrayData.scala
@@ -141,28 +141,29 @@ abstract class ArrayData extends SpecializedGetters with Serializable {
 
   def toArray[T: ClassTag](elementType: DataType): Array[T] = {
     val size = numElements()
+    val accessor = InternalRow.getAccessor(elementType)
     val values = new Array[T](size)
     var i = 0
     while (i < size) {
       if (isNullAt(i)) {
         values(i) = null.asInstanceOf[T]
       } else {
-        values(i) = get(i, elementType).asInstanceOf[T]
+        values(i) = accessor(this, i).asInstanceOf[T]
       }
       i += 1
     }
     values
   }
 
-  // todo: specialize this.
   def foreach(elementType: DataType, f: (Int, Any) => Unit): Unit = {
     val size = numElements()
+    val accessor = InternalRow.getAccessor(elementType)
     var i = 0
     while (i < size) {
       if (isNullAt(i)) {
         f(i, null)
       } else {
-        f(i, get(i, elementType))
+        f(i, accessor(this, i))
       }
       i += 1
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org