aboutsummaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorTakuya UESHIN <ueshin@happy-camper.st>2016-02-17 00:21:15 -0800
committerJosh Rosen <joshrosen@databricks.com>2016-02-17 00:21:15 -0800
commit04e8afe362f3bf36097688f9574c66002535ac0f (patch)
treea40dc72af85e018ad77f40fc7b16c23972f71340 /sql
parent1e1e31e03df14f2e7a9654e640fb2796cf059fe0 (diff)
downloadspark-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.scala7
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()) {