aboutsummaryrefslogtreecommitdiff
path: root/sql/catalyst
diff options
context:
space:
mode:
authorCheng Hao <hao.cheng@intel.com>2015-02-16 12:21:08 -0800
committerMichael Armbrust <michael@databricks.com>2015-02-16 12:21:08 -0800
commitcc552e042896350e21eec9b78593de25006ecc70 (patch)
treef2cf65b4c7bf6d3a9e7014c4869e3208f48fe492 /sql/catalyst
parent8e25373ce72061d3b6a353259ec627606afa4a5f (diff)
downloadspark-cc552e042896350e21eec9b78593de25006ecc70.tar.gz
spark-cc552e042896350e21eec9b78593de25006ecc70.tar.bz2
spark-cc552e042896350e21eec9b78593de25006ecc70.zip
[SQL] [Minor] Update the SpecificMutableRow.copy
When profiling the Join / Aggregate queries via VisualVM, I noticed lots of `SpecificMutableRow` objects created, as well as the `MutableValue`, since the `SpecificMutableRow` are mostly used in data source implementation, but the `copy` method could be called multiple times in upper modules (e.g. in Join / aggregation etc.), duplicated instances created should be avoid. Author: Cheng Hao <hao.cheng@intel.com> Closes #4619 from chenghao-intel/specific_mutable_row and squashes the following commits: 9300d23 [Cheng Hao] update the SpecificMutableRow.copy
Diffstat (limited to 'sql/catalyst')
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/SpecificMutableRow.scala7
1 files changed, 4 insertions, 3 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/SpecificMutableRow.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/SpecificMutableRow.scala
index 7434165f65..21d714c9a8 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/SpecificMutableRow.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/SpecificMutableRow.scala
@@ -220,13 +220,14 @@ final class SpecificMutableRow(val values: Array[MutableValue]) extends MutableR
override def isNullAt(i: Int): Boolean = values(i).isNull
override def copy(): Row = {
- val newValues = new Array[MutableValue](values.length)
+ val newValues = new Array[Any](values.length)
var i = 0
while (i < values.length) {
- newValues(i) = values(i).copy()
+ newValues(i) = values(i).boxed
i += 1
}
- new SpecificMutableRow(newValues)
+
+ new GenericRow(newValues)
}
override def update(ordinal: Int, value: Any): Unit = {