diff options
author | Takuya UESHIN <ueshin@happy-camper.st> | 2016-02-17 00:21:15 -0800 |
---|---|---|
committer | Josh Rosen <joshrosen@databricks.com> | 2016-02-17 00:21:15 -0800 |
commit | 04e8afe362f3bf36097688f9574c66002535ac0f (patch) | |
tree | a40dc72af85e018ad77f40fc7b16c23972f71340 /sql | |
parent | 1e1e31e03df14f2e7a9654e640fb2796cf059fe0 (diff) | |
download | spark-04e8afe362f3bf36097688f9574c66002535ac0f.tar.gz spark-04e8afe362f3bf36097688f9574c66002535ac0f.tar.bz2 spark-04e8afe362f3bf36097688f9574c66002535ac0f.zip |
[SPARK-13357][SQL] Use generated projection and ordering for TakeOrderedAndProjectNode
`TakeOrderedAndProjectNode` should use generated projection and ordering like other `LocalNode`s.
Author: Takuya UESHIN <ueshin@happy-camper.st>
Closes #11230 from ueshin/issues/SPARK-13357.
Diffstat (limited to 'sql')
-rw-r--r-- | sql/core/src/main/scala/org/apache/spark/sql/execution/local/TakeOrderedAndProjectNode.scala | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/local/TakeOrderedAndProjectNode.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/local/TakeOrderedAndProjectNode.scala index ae672fbca8..ca68b7677c 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/execution/local/TakeOrderedAndProjectNode.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/local/TakeOrderedAndProjectNode.scala @@ -20,6 +20,7 @@ package org.apache.spark.sql.execution.local import org.apache.spark.sql.SQLConf import org.apache.spark.sql.catalyst.InternalRow import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.expressions.codegen.GenerateOrdering import org.apache.spark.util.BoundedPriorityQueue case class TakeOrderedAndProjectNode( @@ -30,7 +31,7 @@ case class TakeOrderedAndProjectNode( child: LocalNode) extends UnaryLocalNode(conf) { private[this] var projection: Option[Projection] = _ - private[this] var ord: InterpretedOrdering = _ + private[this] var ord: Ordering[InternalRow] = _ private[this] var iterator: Iterator[InternalRow] = _ private[this] var currentRow: InternalRow = _ @@ -41,8 +42,8 @@ case class TakeOrderedAndProjectNode( override def open(): Unit = { child.open() - projection = projectList.map(new InterpretedProjection(_, child.output)) - ord = new InterpretedOrdering(sortOrder, child.output) + projection = projectList.map(UnsafeProjection.create(_, child.output)) + ord = GenerateOrdering.generate(sortOrder, child.output) // Priority keeps the largest elements, so let's reverse the ordering. val queue = new BoundedPriorityQueue[InternalRow](limit)(ord.reverse) while (child.next()) { |