diff options
author | Davies Liu <davies.liu@gmail.com> | 2015-08-01 00:41:15 -0700 |
---|---|---|
committer | Davies Liu <davies.liu@gmail.com> | 2015-08-01 00:41:15 -0700 |
commit | 60ea7ab4bbfaea29a6cdf4e0e71ddc56afd04de6 (patch) | |
tree | c3a12b90f6c9730c05e4e3b41114277227a609e7 /sql/catalyst | |
parent | 1d59a4162bf5142af270ed7f4b3eab42870c87b7 (diff) | |
download | spark-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')
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) - } } |