Repository: spark Updated Branches: refs/heads/branch-1.0 d3717bea9 -> d7467484f
[SPARK-2050 - 2][SQL] DIV and BETWEEN should not be case sensitive. Followup: #989 Author: Michael Armbrust <mich...@databricks.com> Closes #994 from marmbrus/caseSensitiveFunctions2 and squashes the following commits: 9d9c8ed [Michael Armbrust] Fix DIV and BETWEEN. (cherry picked from commit 8d210560be8b143e48abfbaca347f383b5aa4798) Signed-off-by: Michael Armbrust <mich...@databricks.com> Project: http://git-wip-us.apache.org/repos/asf/spark/repo Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/d7467484 Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/d7467484 Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/d7467484 Branch: refs/heads/branch-1.0 Commit: d7467484ff08a5f9a566d3a7b21bab426ff89127 Parents: d3717be Author: Michael Armbrust <mich...@databricks.com> Authored: Fri Jun 6 11:31:37 2014 -0700 Committer: Michael Armbrust <mich...@databricks.com> Committed: Fri Jun 6 11:32:39 2014 -0700 ---------------------------------------------------------------------- sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala | 6 ++++-- .../golden/between-0-570e4c4bf2968368ac2f325c6c940a06 | 1 + .../resources/golden/div-0-5e7fc5719c7265bc1d6af52005ebad03 | 1 + .../org/apache/spark/sql/hive/execution/HiveQuerySuite.scala | 6 ++++-- 4 files changed, 10 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/spark/blob/d7467484/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala ---------------------------------------------------------------------- diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala index c133bf2..7e91c16 100644 --- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala @@ -795,6 +795,8 @@ private[hive] object HiveQl { val RLIKE = "(?i)RLIKE".r val REGEXP = "(?i)REGEXP".r val IN = "(?i)IN".r + val DIV = "(?i)DIV".r + val BETWEEN = "(?i)BETWEEN".r protected def nodeToExpr(node: Node): Expression = node match { /* Attribute References */ @@ -864,7 +866,7 @@ private[hive] object HiveQl { case Token("-", left :: right:: Nil) => Subtract(nodeToExpr(left), nodeToExpr(right)) case Token("*", left :: right:: Nil) => Multiply(nodeToExpr(left), nodeToExpr(right)) case Token("/", left :: right:: Nil) => Divide(nodeToExpr(left), nodeToExpr(right)) - case Token("DIV", left :: right:: Nil) => Divide(nodeToExpr(left), nodeToExpr(right)) + case Token(DIV(), left :: right:: Nil) => Divide(nodeToExpr(left), nodeToExpr(right)) case Token("%", left :: right:: Nil) => Remainder(nodeToExpr(left), nodeToExpr(right)) /* Comparisons */ @@ -885,7 +887,7 @@ private[hive] object HiveQl { case Token("TOK_FUNCTION", Token(IN(), Nil) :: value :: list) => In(nodeToExpr(value), list.map(nodeToExpr)) case Token("TOK_FUNCTION", - Token("between", Nil) :: + Token(BETWEEN(), Nil) :: Token("KW_FALSE", Nil) :: target :: minValue :: http://git-wip-us.apache.org/repos/asf/spark/blob/d7467484/sql/hive/src/test/resources/golden/between-0-570e4c4bf2968368ac2f325c6c940a06 ---------------------------------------------------------------------- diff --git a/sql/hive/src/test/resources/golden/between-0-570e4c4bf2968368ac2f325c6c940a06 b/sql/hive/src/test/resources/golden/between-0-570e4c4bf2968368ac2f325c6c940a06 new file mode 100644 index 0000000..dcd1d86 --- /dev/null +++ b/sql/hive/src/test/resources/golden/between-0-570e4c4bf2968368ac2f325c6c940a06 @@ -0,0 +1 @@ +2 val_2 http://git-wip-us.apache.org/repos/asf/spark/blob/d7467484/sql/hive/src/test/resources/golden/div-0-5e7fc5719c7265bc1d6af52005ebad03 ---------------------------------------------------------------------- diff --git a/sql/hive/src/test/resources/golden/div-0-5e7fc5719c7265bc1d6af52005ebad03 b/sql/hive/src/test/resources/golden/div-0-5e7fc5719c7265bc1d6af52005ebad03 new file mode 100644 index 0000000..06b63ea --- /dev/null +++ b/sql/hive/src/test/resources/golden/div-0-5e7fc5719c7265bc1d6af52005ebad03 @@ -0,0 +1 @@ +0 0 0 http://git-wip-us.apache.org/repos/asf/spark/blob/d7467484/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala ---------------------------------------------------------------------- diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala index 1a2b2f8..125cc18 100644 --- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala @@ -25,8 +25,10 @@ import org.apache.spark.sql.hive.test.TestHive._ class HiveQuerySuite extends HiveComparisonTest { createQueryTest("between", - "SELECT * FROM src WHERE key between 1 and 2" - ) + "SELECT * FROM src WHERE key Between 1 and 2") + + createQueryTest("div", + "SELECT 1 DIV 2, 1 div 2, 1 dIv 2 FROM src LIMIT 1") test("Query expressed in SQL") { assert(sql("SELECT 1").collect() === Array(Seq(1)))