Skip to content

Commit

Permalink
remove POWER part
Browse files Browse the repository at this point in the history
  • Loading branch information
xinyunh committed Sep 3, 2014
1 parent 8843643 commit 71d15e7
Show file tree
Hide file tree
Showing 3 changed files with 0 additions and 75 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,6 @@ class SqlParser extends StandardTokenParsers with PackratParsers {
protected val SUBSTRING = Keyword("SUBSTRING")
protected val SQRT = Keyword("SQRT")
protected val ABS = Keyword("ABS")
protected val POW = Keyword("POW")
protected val POWER = Keyword("POWER")

// Use reflection to find the reserved words defined in this class.
protected val reservedWords =
Expand Down Expand Up @@ -332,9 +330,6 @@ class SqlParser extends StandardTokenParsers with PackratParsers {
} |
SQRT ~> "(" ~> expression <~ ")" ^^ { case exp => Sqrt(exp) } |
ABS ~> "(" ~> expression <~ ")" ^^ { case exp => Abs(exp) } |
(POW | POWER) ~> "(" ~> expression ~ "," ~ expression <~ ")" ^^ {
case s ~ "," ~ p => Power(s,p)
} |
ident ~ "(" ~ repsep(expression, ",") <~ ")" ^^ {
case udfName ~ _ ~ exprs => UnresolvedFunction(udfName, exprs)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,40 +144,3 @@ case class Abs(child: Expression) extends UnaryExpression {

override def eval(input: Row): Any = n1(child, input, _.abs(_))
}

/**
* A function that get the power value of two parameters.
* First one is taken as base while second one taken as exponent
*/
case class Power(base: Expression, exponent: Expression) extends Expression {
type EvaluatedType = Any

def dataType: DataType = {
if (!resolved) {
throw new UnresolvedException(this, s"Cannot resolve since $children are not resolved")
}
DoubleType
}
override def foldable = base.foldable && exponent.foldable
def nullable: Boolean = base.nullable || exponent.nullable
override def toString = s"Power($base, $exponent)"

override def children = base :: exponent :: Nil

override def eval(input: Row): Any = {
def convertToDouble(num: EvaluatedType): Double = {
num match {
case d:Double => d
case i:Integer => i.doubleValue()
case f:Float => f.toDouble
}
}

val base_v = base.eval(input)
val exponent_v = exponent.eval(input)

if ((base_v == null) || (exponent_v == null)) null
else pow(convertToDouble(base_v), convertToDouble(exponent_v))
}

}
33 changes: 0 additions & 33 deletions sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala
Original file line number Diff line number Diff line change
Expand Up @@ -53,39 +53,6 @@ class SQLQuerySuite extends QueryTest with BeforeAndAfterAll {
2.5)
}

test("SPARK-3176 Added Parser of SQL POWER()") {
checkAnswer(
sql("SELECT POWER(0, 512.0)"),
0.0)
checkAnswer(
sql("SELECT POW(1.0, 256.0)"),
1.0)
checkAnswer(
sql("SELECT POWER(1, -128)"),
1.0)
checkAnswer(
sql("SELECT POW(-1.0, -63)"),
-1.0)
checkAnswer(
sql("SELECT POWER(-1, 32.0)"),
1.0)
checkAnswer(
sql("SELECT POW(2, 8)"),
256.0)
checkAnswer(
sql("SELECT POWER(0.5, 2)"),
0.25)
checkAnswer(
sql("SELECT POW(2, -2)"),
0.25)
checkAnswer(
sql("SELECT POWER(8, 1)"),
8.0)
checkAnswer(
sql("SELECT POW(16, 0.5)"),
4.0)
}

test("SPARK-3176 Added Parser of SQL LAST()") {
checkAnswer(
sql("SELECT LAST(n) FROM lowerCaseData"),
Expand Down

0 comments on commit 71d15e7

Please sign in to comment.