You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by ma...@apache.org on 2014/09/09 04:05:05 UTC
git commit: SPARK-3423: [SQL] Implement BETWEEN for SQLParser
Repository: spark
Updated Branches:
refs/heads/master 50a4fa774 -> ca0348e68
SPARK-3423: [SQL] Implement BETWEEN for SQLParser
This patch improves the SQLParser by adding support for BETWEEN conditions
Author: William Benton <wi...@redhat.com>
Closes #2295 from willb/sql-between and squashes the following commits:
0016d30 [William Benton] Implement BETWEEN for SQLParser
Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/ca0348e6
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/ca0348e6
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/ca0348e6
Branch: refs/heads/master
Commit: ca0348e68213c2c7589f2018ebf9d889c0ce59c3
Parents: 50a4fa7
Author: William Benton <wi...@redhat.com>
Authored: Mon Sep 8 19:05:02 2014 -0700
Committer: Michael Armbrust <mi...@databricks.com>
Committed: Mon Sep 8 19:05:02 2014 -0700
----------------------------------------------------------------------
.../org/apache/spark/sql/catalyst/SqlParser.scala | 4 ++++
.../org/apache/spark/sql/SQLQuerySuite.scala | 18 ++++++++++++++++++
2 files changed, 22 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/spark/blob/ca0348e6/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/SqlParser.scala
----------------------------------------------------------------------
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/SqlParser.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/SqlParser.scala
index a88bd85..bfc197c 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/SqlParser.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/SqlParser.scala
@@ -73,6 +73,7 @@ class SqlParser extends StandardTokenParsers with PackratParsers {
protected val ASC = Keyword("ASC")
protected val APPROXIMATE = Keyword("APPROXIMATE")
protected val AVG = Keyword("AVG")
+ protected val BETWEEN = Keyword("BETWEEN")
protected val BY = Keyword("BY")
protected val CACHE = Keyword("CACHE")
protected val CAST = Keyword("CAST")
@@ -272,6 +273,9 @@ class SqlParser extends StandardTokenParsers with PackratParsers {
termExpression ~ ">=" ~ termExpression ^^ { case e1 ~ _ ~ e2 => GreaterThanOrEqual(e1, e2) } |
termExpression ~ "!=" ~ termExpression ^^ { case e1 ~ _ ~ e2 => Not(EqualTo(e1, e2)) } |
termExpression ~ "<>" ~ termExpression ^^ { case e1 ~ _ ~ e2 => Not(EqualTo(e1, e2)) } |
+ termExpression ~ BETWEEN ~ termExpression ~ AND ~ termExpression ^^ {
+ case e ~ _ ~ el ~ _ ~ eu => And(GreaterThanOrEqual(e, el), LessThanOrEqual(e, eu))
+ } |
termExpression ~ RLIKE ~ termExpression ^^ { case e1 ~ _ ~ e2 => RLike(e1, e2) } |
termExpression ~ REGEXP ~ termExpression ^^ { case e1 ~ _ ~ e2 => RLike(e1, e2) } |
termExpression ~ LIKE ~ termExpression ^^ { case e1 ~ _ ~ e2 => Like(e1, e2) } |
http://git-wip-us.apache.org/repos/asf/spark/blob/ca0348e6/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala
----------------------------------------------------------------------
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala
index e8fbc28..45c0ca8 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala
@@ -597,4 +597,22 @@ class SQLQuerySuite extends QueryTest with BeforeAndAfterAll {
(3, null) ::
(4, 2147483644) :: Nil)
}
+
+ test("SPARK-3423 BETWEEN") {
+ checkAnswer(
+ sql("SELECT key, value FROM testData WHERE key BETWEEN 5 and 7"),
+ Seq((5, "5"), (6, "6"), (7, "7"))
+ )
+
+ checkAnswer(
+ sql("SELECT key, value FROM testData WHERE key BETWEEN 7 and 7"),
+ Seq((7, "7"))
+ )
+
+ checkAnswer(
+ sql("SELECT key, value FROM testData WHERE key BETWEEN 9 and 7"),
+ Seq()
+ )
+
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org