aboutsummaryrefslogtreecommitdiff
path: root/sql/catalyst/src/main
diff options
context:
space:
mode:
authorWenchen Fan <wenchen@databricks.com>2016-08-01 17:54:41 -0700
committerYin Huai <yhuai@databricks.com>2016-08-01 17:54:41 -0700
commit2eedc00b04ef8ca771ff64c4f834c25f835f5f44 (patch)
treee40dd57469aa3850320ff07853d515d4dae2a3f9 /sql/catalyst/src/main
parent03d46aafe561b03e25f4e25cf01e631c18dd827c (diff)
downloadspark-2eedc00b04ef8ca771ff64c4f834c25f835f5f44.tar.gz
spark-2eedc00b04ef8ca771ff64c4f834c25f835f5f44.tar.bz2
spark-2eedc00b04ef8ca771ff64c4f834c25f835f5f44.zip
[SPARK-16828][SQL] remove MaxOf and MinOf
## What changes were proposed in this pull request? These 2 expressions are not needed anymore after we have `Greatest` and `Least`. This PR removes them and related tests. ## How was this patch tested? N/A Author: Wenchen Fan <wenchen@databricks.com> Closes #14434 from cloud-fan/minor1.
Diffstat (limited to 'sql/catalyst/src/main')
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala110
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala4
2 files changed, 0 insertions, 114 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala
index 7ff8795d4f..77d40a5079 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala
@@ -361,116 +361,6 @@ case class Remainder(left: Expression, right: Expression)
}
}
-case class MaxOf(left: Expression, right: Expression)
- extends BinaryArithmetic with NonSQLExpression {
-
- // TODO: Remove MaxOf and MinOf, and replace its usage with Greatest and Least.
-
- override def inputType: AbstractDataType = TypeCollection.Ordered
-
- override def nullable: Boolean = left.nullable && right.nullable
-
- private lazy val ordering = TypeUtils.getInterpretedOrdering(dataType)
-
- override def eval(input: InternalRow): Any = {
- val input1 = left.eval(input)
- val input2 = right.eval(input)
- if (input1 == null) {
- input2
- } else if (input2 == null) {
- input1
- } else {
- if (ordering.compare(input1, input2) < 0) {
- input2
- } else {
- input1
- }
- }
- }
-
- override def doGenCode(ctx: CodegenContext, ev: ExprCode): ExprCode = {
- val eval1 = left.genCode(ctx)
- val eval2 = right.genCode(ctx)
- val compCode = ctx.genComp(dataType, eval1.value, eval2.value)
-
- ev.copy(code = eval1.code + eval2.code + s"""
- boolean ${ev.isNull} = false;
- ${ctx.javaType(left.dataType)} ${ev.value} =
- ${ctx.defaultValue(left.dataType)};
-
- if (${eval1.isNull}) {
- ${ev.isNull} = ${eval2.isNull};
- ${ev.value} = ${eval2.value};
- } else if (${eval2.isNull}) {
- ${ev.isNull} = ${eval1.isNull};
- ${ev.value} = ${eval1.value};
- } else {
- if ($compCode > 0) {
- ${ev.value} = ${eval1.value};
- } else {
- ${ev.value} = ${eval2.value};
- }
- }""")
- }
-
- override def symbol: String = "max"
-}
-
-case class MinOf(left: Expression, right: Expression)
- extends BinaryArithmetic with NonSQLExpression {
-
- // TODO: Remove MaxOf and MinOf, and replace its usage with Greatest and Least.
-
- override def inputType: AbstractDataType = TypeCollection.Ordered
-
- override def nullable: Boolean = left.nullable && right.nullable
-
- private lazy val ordering = TypeUtils.getInterpretedOrdering(dataType)
-
- override def eval(input: InternalRow): Any = {
- val input1 = left.eval(input)
- val input2 = right.eval(input)
- if (input1 == null) {
- input2
- } else if (input2 == null) {
- input1
- } else {
- if (ordering.compare(input1, input2) < 0) {
- input1
- } else {
- input2
- }
- }
- }
-
- override def doGenCode(ctx: CodegenContext, ev: ExprCode): ExprCode = {
- val eval1 = left.genCode(ctx)
- val eval2 = right.genCode(ctx)
- val compCode = ctx.genComp(dataType, eval1.value, eval2.value)
-
- ev.copy(code = eval1.code + eval2.code + s"""
- boolean ${ev.isNull} = false;
- ${ctx.javaType(left.dataType)} ${ev.value} =
- ${ctx.defaultValue(left.dataType)};
-
- if (${eval1.isNull}) {
- ${ev.isNull} = ${eval2.isNull};
- ${ev.value} = ${eval2.value};
- } else if (${eval2.isNull}) {
- ${ev.isNull} = ${eval1.isNull};
- ${ev.value} = ${eval1.value};
- } else {
- if ($compCode < 0) {
- ${ev.value} = ${eval1.value};
- } else {
- ${ev.value} = ${eval2.value};
- }
- }""")
- }
-
- override def symbol: String = "min"
-}
-
@ExpressionDescription(
usage = "_FUNC_(a, b) - Returns the positive modulo",
extended = "> SELECT _FUNC_(10,3);\n 1")
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala
index fe328fd598..75130007b9 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala
@@ -662,10 +662,6 @@ object NullPropagation extends Rule[LogicalPlan] {
case e @ Substring(_, Literal(null, _), _) => Literal.create(null, e.dataType)
case e @ Substring(_, _, Literal(null, _)) => Literal.create(null, e.dataType)
- // MaxOf and MinOf can't do null propagation
- case e: MaxOf => e
- case e: MinOf => e
-
// Put exceptional cases above if any
case e @ BinaryArithmetic(Literal(null, _), _) => Literal.create(null, e.dataType)
case e @ BinaryArithmetic(_, Literal(null, _)) => Literal.create(null, e.dataType)