aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/GenericArrayData.scala15
1 files changed, 11 insertions, 4 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/GenericArrayData.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/GenericArrayData.scala
index 3a665d3708..7ee9581b63 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/GenericArrayData.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/GenericArrayData.scala
@@ -23,6 +23,16 @@ import org.apache.spark.sql.catalyst.InternalRow
import org.apache.spark.sql.types.{DataType, Decimal}
import org.apache.spark.unsafe.types.{CalendarInterval, UTF8String}
+private object GenericArrayData {
+
+ // SPARK-16634: Workaround for JVM bug present in some 1.7 versions.
+ def anyToSeq(seqOrArray: Any): Seq[Any] = seqOrArray match {
+ case seq: Seq[Any] => seq
+ case array: Array[_] => array.toSeq
+ }
+
+}
+
class GenericArrayData(val array: Array[Any]) extends ArrayData {
def this(seq: Seq[Any]) = this(seq.toArray)
@@ -37,10 +47,7 @@ class GenericArrayData(val array: Array[Any]) extends ArrayData {
def this(primitiveArray: Array[Byte]) = this(primitiveArray.toSeq)
def this(primitiveArray: Array[Boolean]) = this(primitiveArray.toSeq)
- def this(seqOrArray: Any) = this(seqOrArray match {
- case seq: Seq[Any] => seq
- case array: Array[_] => array.toSeq
- })
+ def this(seqOrArray: Any) = this(GenericArrayData.anyToSeq(seqOrArray))
override def copy(): ArrayData = new GenericArrayData(array.clone())