From a7518386aa384e89d01dac57619cc97caf23124a Mon Sep 17 00:00:00 2001 From: Cheng Hao Date: Tue, 11 Nov 2014 18:03:12 -0800 Subject: [PATCH 1/3] Construct the MutableRow from an existed row --- .../org/apache/spark/sql/catalyst/expressions/Row.scala | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Row.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Row.scala index d00ec39774c3..463f3667fc44 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Row.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Row.scala @@ -215,9 +215,11 @@ class GenericRow(protected[sql] val values: Array[Any]) extends Row { def copy() = this } -class GenericMutableRow(size: Int) extends GenericRow(size) with MutableRow { +class GenericMutableRow(v: Array[Any]) extends GenericRow(v) with MutableRow { /** No-arg constructor for serialization. */ - def this() = this(0) + def this() = this(null) + + def this(size: Int) = this(new Array[Any](size)) override def setBoolean(ordinal: Int, value: Boolean): Unit = { values(ordinal) = value } override def setByte(ordinal: Int, value: Byte): Unit = { values(ordinal) = value } From 4681aead7447fd71ef363d5c65a534b75cbc2a7a Mon Sep 17 00:00:00 2001 From: Cheng Hao Date: Tue, 11 Nov 2014 18:13:28 -0800 Subject: [PATCH 2/3] Add toMutableRow method in object Row --- .../org/apache/spark/sql/catalyst/expressions/Row.scala | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Row.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Row.scala index 463f3667fc44..d2d35d7caf42 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Row.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Row.scala @@ -42,6 +42,14 @@ object Row { * This method can be used to construct a [[Row]] from a [[Seq]] of values. */ def fromSeq(values: Seq[Any]): Row = new GenericRow(values.toArray) + + /** + * This method can be used to construct a [[MutableRow]] from a [[Row]] + */ + def toMutableRow(row: Row): MutableRow = row match { + case x: MutableRow => x + case other: Row => new GenericMutableRow(other.toArray) + } } /** From e8a10bd201d1517e8ffa9d3d4bb48ea6bf64a3a5 Mon Sep 17 00:00:00 2001 From: Cheng Hao Date: Sun, 16 Nov 2014 17:43:19 -0800 Subject: [PATCH 3/3] revert the change of Row object --- .../org/apache/spark/sql/catalyst/expressions/Row.scala | 8 -------- 1 file changed, 8 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Row.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Row.scala index d2d35d7caf42..463f3667fc44 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Row.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Row.scala @@ -42,14 +42,6 @@ object Row { * This method can be used to construct a [[Row]] from a [[Seq]] of values. */ def fromSeq(values: Seq[Any]): Row = new GenericRow(values.toArray) - - /** - * This method can be used to construct a [[MutableRow]] from a [[Row]] - */ - def toMutableRow(row: Row): MutableRow = row match { - case x: MutableRow => x - case other: Row => new GenericMutableRow(other.toArray) - } } /**