You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by da...@apache.org on 2016/01/08 18:50:45 UTC
spark git commit: [SPARK-12687] [SQL] Support from clause surrounded
by `()`.
Repository: spark
Updated Branches:
refs/heads/master b9c835337 -> cfe1ba56e
[SPARK-12687] [SQL] Support from clause surrounded by `()`.
JIRA: https://issues.apache.org/jira/browse/SPARK-12687
Some queries such as `(select 1 as a) union (select 2 as a)` can't work. This patch fixes it.
Author: Liang-Chi Hsieh <vi...@gmail.com>
Closes #10660 from viirya/fix-union.
Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/cfe1ba56
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/cfe1ba56
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/cfe1ba56
Branch: refs/heads/master
Commit: cfe1ba56e4ab281a9e8eaf419fb7429f93c7a0ce
Parents: b9c8353
Author: Liang-Chi Hsieh <vi...@gmail.com>
Authored: Fri Jan 8 09:50:41 2016 -0800
Committer: Davies Liu <da...@gmail.com>
Committed: Fri Jan 8 09:50:41 2016 -0800
----------------------------------------------------------------------
.../sql/catalyst/parser/FromClauseParser.g | 2 +-
.../spark/sql/catalyst/parser/SparkSqlParser.g | 21 +++++++++++++++++++-
.../spark/sql/catalyst/CatalystQlSuite.scala | 4 ++++
3 files changed, 25 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/spark/blob/cfe1ba56/sql/catalyst/src/main/antlr3/org/apache/spark/sql/catalyst/parser/FromClauseParser.g
----------------------------------------------------------------------
diff --git a/sql/catalyst/src/main/antlr3/org/apache/spark/sql/catalyst/parser/FromClauseParser.g b/sql/catalyst/src/main/antlr3/org/apache/spark/sql/catalyst/parser/FromClauseParser.g
index ba6cfc6..972c52e 100644
--- a/sql/catalyst/src/main/antlr3/org/apache/spark/sql/catalyst/parser/FromClauseParser.g
+++ b/sql/catalyst/src/main/antlr3/org/apache/spark/sql/catalyst/parser/FromClauseParser.g
@@ -151,8 +151,8 @@ fromSource
@after { gParent.popMsg(state); }
:
(LPAREN KW_VALUES) => fromSource0
- | (LPAREN) => LPAREN joinSource RPAREN -> joinSource
| fromSource0
+ | (LPAREN joinSource) => LPAREN joinSource RPAREN -> joinSource
;
http://git-wip-us.apache.org/repos/asf/spark/blob/cfe1ba56/sql/catalyst/src/main/antlr3/org/apache/spark/sql/catalyst/parser/SparkSqlParser.g
----------------------------------------------------------------------
diff --git a/sql/catalyst/src/main/antlr3/org/apache/spark/sql/catalyst/parser/SparkSqlParser.g b/sql/catalyst/src/main/antlr3/org/apache/spark/sql/catalyst/parser/SparkSqlParser.g
index cf8a565..b04bb67 100644
--- a/sql/catalyst/src/main/antlr3/org/apache/spark/sql/catalyst/parser/SparkSqlParser.g
+++ b/sql/catalyst/src/main/antlr3/org/apache/spark/sql/catalyst/parser/SparkSqlParser.g
@@ -2216,6 +2216,8 @@ regularBody[boolean topLevel]
selectStatement[boolean topLevel]
:
(
+ (
+ LPAREN
s=selectClause
f=fromClause?
w=whereClause?
@@ -2227,6 +2229,20 @@ selectStatement[boolean topLevel]
sort=sortByClause?
win=window_clause?
l=limitClause?
+ RPAREN
+ |
+ s=selectClause
+ f=fromClause?
+ w=whereClause?
+ g=groupByClause?
+ h=havingClause?
+ o=orderByClause?
+ c=clusterByClause?
+ d=distributeByClause?
+ sort=sortByClause?
+ win=window_clause?
+ l=limitClause?
+ )
-> ^(TOK_QUERY $f? ^(TOK_INSERT ^(TOK_DESTINATION ^(TOK_DIR TOK_TMP_FILE))
$s $w? $g? $h? $o? $c?
$d? $sort? $win? $l?))
@@ -2241,7 +2257,10 @@ selectStatement[boolean topLevel]
setOpSelectStatement[CommonTree t, boolean topLevel]
:
- (u=setOperator b=simpleSelectStatement
+ ((
+ u=setOperator LPAREN b=simpleSelectStatement RPAREN
+ |
+ u=setOperator b=simpleSelectStatement)
-> {$setOpSelectStatement.tree != null && $u.tree.getType()==SparkSqlParser.TOK_UNIONDISTINCT}?
^(TOK_QUERY
^(TOK_FROM
http://git-wip-us.apache.org/repos/asf/spark/blob/cfe1ba56/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/CatalystQlSuite.scala
----------------------------------------------------------------------
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/CatalystQlSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/CatalystQlSuite.scala
index 0fee97f..30978d9 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/CatalystQlSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/CatalystQlSuite.scala
@@ -28,5 +28,9 @@ class CatalystQlSuite extends PlanTest {
paresr.createPlan("select * from t1 union select * from t2")
paresr.createPlan("select * from t1 except select * from t2")
paresr.createPlan("select * from t1 intersect select * from t2")
+ paresr.createPlan("(select * from t1) union all (select * from t2)")
+ paresr.createPlan("(select * from t1) union distinct (select * from t2)")
+ paresr.createPlan("(select * from t1) union (select * from t2)")
+ paresr.createPlan("select * from ((select * from t1) union (select * from t2)) t")
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org