aboutsummaryrefslogtreecommitdiff
path: root/sql/catalyst
diff options
context:
space:
mode:
authorDavies Liu <davies.liu@gmail.com>2015-08-01 00:41:15 -0700
committerDavies Liu <davies.liu@gmail.com>2015-08-01 00:41:15 -0700
commit60ea7ab4bbfaea29a6cdf4e0e71ddc56afd04de6 (patch)
treec3a12b90f6c9730c05e4e3b41114277227a609e7 /sql/catalyst
parent1d59a4162bf5142af270ed7f4b3eab42870c87b7 (diff)
downloadspark-60ea7ab4bbfaea29a6cdf4e0e71ddc56afd04de6.tar.gz
spark-60ea7ab4bbfaea29a6cdf4e0e71ddc56afd04de6.tar.bz2
spark-60ea7ab4bbfaea29a6cdf4e0e71ddc56afd04de6.zip
Revert "[SPARK-8232] [SQL] Add sort_array support"
This reverts commit 67ad4e21fc68336b0ad6f9a363fb5ebb51f592bf.
Diffstat (limited to 'sql/catalyst')
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/FunctionRegistry.scala1
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/collectionOperations.scala80
-rw-r--r--sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/CollectionFunctionsSuite.scala22
3 files changed, 1 insertions, 102 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/FunctionRegistry.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/FunctionRegistry.scala
index 6e144518bb..ee44cbcba6 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/FunctionRegistry.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/FunctionRegistry.scala
@@ -233,7 +233,6 @@ object FunctionRegistry {
// collection functions
expression[Size]("size"),
- expression[SortArray]("sort_array"),
// misc functions
expression[Crc32]("crc32"),
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/collectionOperations.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/collectionOperations.scala
index 1156797b2c..015bbb6582 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/collectionOperations.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/collectionOperations.scala
@@ -16,10 +16,7 @@
*/
package org.apache.spark.sql.catalyst.expressions
-import java.util.Comparator
-
-import org.apache.spark.sql.catalyst.analysis.TypeCheckResult
-import org.apache.spark.sql.catalyst.expressions.codegen.{CodegenFallback, CodeGenContext, GeneratedExpressionCode}
+import org.apache.spark.sql.catalyst.expressions.codegen.{CodeGenContext, GeneratedExpressionCode}
import org.apache.spark.sql.types._
/**
@@ -38,78 +35,3 @@ case class Size(child: Expression) extends UnaryExpression with ExpectsInputType
nullSafeCodeGen(ctx, ev, c => s"${ev.primitive} = ($c).numElements();")
}
}
-
-/**
- * Sorts the input array in ascending / descending order according to the natural ordering of
- * the array elements and returns it.
- */
-case class SortArray(base: Expression, ascendingOrder: Expression)
- extends BinaryExpression with ExpectsInputTypes with CodegenFallback {
-
- def this(e: Expression) = this(e, Literal(true))
-
- override def left: Expression = base
- override def right: Expression = ascendingOrder
- override def dataType: DataType = base.dataType
- override def inputTypes: Seq[AbstractDataType] = Seq(ArrayType, BooleanType)
-
- override def checkInputDataTypes(): TypeCheckResult = base.dataType match {
- case _ @ ArrayType(n: AtomicType, _) => TypeCheckResult.TypeCheckSuccess
- case _ @ ArrayType(n, _) => TypeCheckResult.TypeCheckFailure(
- s"Type $n is not the AtomicType, we can not perform the ordering operations")
- case other =>
- TypeCheckResult.TypeCheckFailure(s"ArrayType(AtomicType) is expected, but we got $other")
- }
-
- @transient
- private lazy val lt = {
- val ordering = base.dataType match {
- case _ @ ArrayType(n: AtomicType, _) => n.ordering.asInstanceOf[Ordering[Any]]
- }
-
- new Comparator[Any]() {
- override def compare(o1: Any, o2: Any): Int = {
- if (o1 == null && o2 == null) {
- 0
- } else if (o1 == null) {
- -1
- } else if (o2 == null) {
- 1
- } else {
- ordering.compare(o1, o2)
- }
- }
- }
- }
-
- @transient
- private lazy val gt = {
- val ordering = base.dataType match {
- case _ @ ArrayType(n: AtomicType, _) => n.ordering.asInstanceOf[Ordering[Any]]
- }
-
- new Comparator[Any]() {
- override def compare(o1: Any, o2: Any): Int = {
- if (o1 == null && o2 == null) {
- 0
- } else if (o1 == null) {
- 1
- } else if (o2 == null) {
- -1
- } else {
- -ordering.compare(o1, o2)
- }
- }
- }
- }
-
- override def nullSafeEval(array: Any, ascending: Any): Any = {
- val data = array.asInstanceOf[ArrayData].toArray().asInstanceOf[Array[AnyRef]]
- java.util.Arrays.sort(
- data,
- if (ascending.asInstanceOf[Boolean]) lt else gt)
- new GenericArrayData(data.asInstanceOf[Array[Any]])
- }
-
- override def prettyName: String = "sort_array"
-}
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/CollectionFunctionsSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/CollectionFunctionsSuite.scala
index 2c7e85c446..28c41b5716 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/CollectionFunctionsSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/CollectionFunctionsSuite.scala
@@ -43,26 +43,4 @@ class CollectionFunctionsSuite extends SparkFunSuite with ExpressionEvalHelper {
checkEvaluation(Literal.create(null, MapType(StringType, StringType)), null)
checkEvaluation(Literal.create(null, ArrayType(StringType)), null)
}
-
- test("Sort Array") {
- val a0 = Literal.create(Seq(2, 1, 3), ArrayType(IntegerType))
- val a1 = Literal.create(Seq[Integer](), ArrayType(IntegerType))
- val a2 = Literal.create(Seq("b", "a"), ArrayType(StringType))
- val a3 = Literal.create(Seq("b", null, "a"), ArrayType(StringType))
-
- checkEvaluation(new SortArray(a0), Seq(1, 2, 3))
- checkEvaluation(new SortArray(a1), Seq[Integer]())
- checkEvaluation(new SortArray(a2), Seq("a", "b"))
- checkEvaluation(new SortArray(a3), Seq(null, "a", "b"))
- checkEvaluation(SortArray(a0, Literal(true)), Seq(1, 2, 3))
- checkEvaluation(SortArray(a1, Literal(true)), Seq[Integer]())
- checkEvaluation(SortArray(a2, Literal(true)), Seq("a", "b"))
- checkEvaluation(new SortArray(a3, Literal(true)), Seq(null, "a", "b"))
- checkEvaluation(SortArray(a0, Literal(false)), Seq(3, 2, 1))
- checkEvaluation(SortArray(a1, Literal(false)), Seq[Integer]())
- checkEvaluation(SortArray(a2, Literal(false)), Seq("b", "a"))
- checkEvaluation(new SortArray(a3, Literal(false)), Seq("b", "a", null))
-
- checkEvaluation(Literal.create(null, ArrayType(StringType)), null)
- }
}