aboutsummaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorMichael Armbrust <michael@databricks.com>2014-06-06 11:31:37 -0700
committerMichael Armbrust <michael@databricks.com>2014-06-06 11:31:37 -0700
commit8d210560be8b143e48abfbaca347f383b5aa4798 (patch)
tree246946ef6ae89e4902b7338d07ea5cfafc3ce8ee /sql
parent8d85359f84cc67996b4bcf1670a8a98ab4f914a2 (diff)
downloadspark-8d210560be8b143e48abfbaca347f383b5aa4798.tar.gz
spark-8d210560be8b143e48abfbaca347f383b5aa4798.tar.bz2
spark-8d210560be8b143e48abfbaca347f383b5aa4798.zip
[SPARK-2050 - 2][SQL] DIV and BETWEEN should not be case sensitive.
Followup: #989 Author: Michael Armbrust <michael@databricks.com> Closes #994 from marmbrus/caseSensitiveFunctions2 and squashes the following commits: 9d9c8ed [Michael Armbrust] Fix DIV and BETWEEN.
Diffstat (limited to 'sql')
-rw-r--r--sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala6
-rw-r--r--sql/hive/src/test/resources/golden/between-0-570e4c4bf2968368ac2f325c6c940a061
-rw-r--r--sql/hive/src/test/resources/golden/div-0-5e7fc5719c7265bc1d6af52005ebad031
-rw-r--r--sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala6
4 files changed, 10 insertions, 4 deletions
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 c133bf2423..7e91c16c6b 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 ::
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 0000000000..dcd1d8643e
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/between-0-570e4c4bf2968368ac2f325c6c940a06
@@ -0,0 +1 @@
+2 val_2
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 0000000000..06b63ea6c2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/div-0-5e7fc5719c7265bc1d6af52005ebad03
@@ -0,0 +1 @@
+0 0 0
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 1a2b2f8918..125cc18bfb 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)))