You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by zs...@apache.org on 2008/12/06 23:51:23 UTC

svn commit: r724047 - in /hadoop/hive/trunk: CHANGES.txt ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java ql/src/test/queries/clientpositive/join0.q ql/src/test/results/clientpositive/join0.q.out

Author: zshao
Date: Sat Dec  6 14:51:23 2008
New Revision: 724047

URL: http://svn.apache.org/viewvc?rev=724047&view=rev
Log:
HIVE-111. Support join without a ON clause. (Namit through zshao)

Added:
    hadoop/hive/trunk/ql/src/test/queries/clientpositive/join0.q
    hadoop/hive/trunk/ql/src/test/results/clientpositive/join0.q.out
Modified:
    hadoop/hive/trunk/CHANGES.txt
    hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java

Modified: hadoop/hive/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/CHANGES.txt?rev=724047&r1=724046&r2=724047&view=diff
==============================================================================
--- hadoop/hive/trunk/CHANGES.txt (original)
+++ hadoop/hive/trunk/CHANGES.txt Sat Dec  6 14:51:23 2008
@@ -25,6 +25,8 @@
 
   BUG FIXES
 
+    HIVE-111. Support join without a ON clause. (Namit through zshao)
+
     HIVE-77. Thread safe query execution. (Joydeep through zshao)
 
     HIVE-86. Drop table should not delete data for external tables.

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java?rev=724047&r1=724046&r2=724047&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java Sat Dec  6 14:51:23 2008
@@ -754,6 +754,8 @@
    */
   private void parseJoinCondition(QBJoinTree joinTree, CommonTree joinCond, Vector<String> leftSrc)
       throws SemanticException {
+    if (joinCond == null) 
+      return;
 
     switch (joinCond.getToken().getType()) {
     case HiveParser.KW_OR:
@@ -2415,7 +2417,6 @@
     joinTree.setFilters(filters);
 
     CommonTree joinCond = (CommonTree) joinParseTree.getChild(2);
-    assert joinCond != null;
     Vector<String> leftSrc = new Vector<String>();
     parseJoinCondition(joinTree, joinCond, leftSrc);
     if (leftSrc.size() == 1)

Added: hadoop/hive/trunk/ql/src/test/queries/clientpositive/join0.q
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/queries/clientpositive/join0.q?rev=724047&view=auto
==============================================================================
--- hadoop/hive/trunk/ql/src/test/queries/clientpositive/join0.q (added)
+++ hadoop/hive/trunk/ql/src/test/queries/clientpositive/join0.q Sat Dec  6 14:51:23 2008
@@ -0,0 +1,11 @@
+EXPLAIN
+SELECT * FROM
+  (SELECT * FROM src WHERE src.key < 10) src1 
+    JOIN 
+  (SELECT * FROM src WHERE src.key < 10) src2;
+
+SELECT * FROM
+  (SELECT * FROM src WHERE src.key < 10) src1 
+    JOIN 
+  (SELECT * FROM src WHERE src.key < 10) src2;
+

Added: hadoop/hive/trunk/ql/src/test/results/clientpositive/join0.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/results/clientpositive/join0.q.out?rev=724047&view=auto
==============================================================================
--- hadoop/hive/trunk/ql/src/test/results/clientpositive/join0.q.out (added)
+++ hadoop/hive/trunk/ql/src/test/results/clientpositive/join0.q.out Sat Dec  6 14:51:23 2008
@@ -0,0 +1,177 @@
+ABSTRACT SYNTAX TREE:
+  (TOK_QUERY (TOK_FROM (TOK_JOIN (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (< (TOK_COLREF src key) 10)))) src1) (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (< (TOK_COLREF src key) 10)))) src2))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF))))
+
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Alias -> Map Operator Tree:
+        src2:src 
+            Filter Operator
+              predicate:
+                  expr: (key < 10)
+                  type: boolean
+              Select Operator
+                expressions:
+                      expr: key
+                      type: string
+                      expr: value
+                      type: string
+                Reduce Output Operator
+                  sort order: 
+                  tag: 1
+                  value expressions:
+                        expr: 0
+                        type: string
+                        expr: 1
+                        type: string
+        src1:src 
+            Filter Operator
+              predicate:
+                  expr: (key < 10)
+                  type: boolean
+              Select Operator
+                expressions:
+                      expr: key
+                      type: string
+                      expr: value
+                      type: string
+                Reduce Output Operator
+                  sort order: 
+                  tag: 0
+                  value expressions:
+                        expr: 0
+                        type: string
+                        expr: 1
+                        type: string
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Inner Join 0 to 1
+          condition expressions:
+            0 {VALUE.0} {VALUE.1}
+            1 {VALUE.0} {VALUE.1}
+          Select Operator
+            expressions:
+                  expr: 0
+                  type: string
+                  expr: 1
+                  type: string
+                  expr: 2
+                  type: string
+                  expr: 3
+                  type: string
+            File Output Operator
+              compressed: false
+              table:
+                  input format: org.apache.hadoop.mapred.TextInputFormat
+                  output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+
+
+9	val_9	0	val_0
+9	val_9	4	val_4
+9	val_9	8	val_8
+9	val_9	0	val_0
+9	val_9	0	val_0
+9	val_9	5	val_5
+9	val_9	2	val_2
+9	val_9	5	val_5
+9	val_9	9	val_9
+9	val_9	5	val_5
+5	val_5	0	val_0
+5	val_5	4	val_4
+5	val_5	8	val_8
+5	val_5	0	val_0
+5	val_5	0	val_0
+5	val_5	5	val_5
+5	val_5	2	val_2
+5	val_5	5	val_5
+5	val_5	9	val_9
+5	val_5	5	val_5
+8	val_8	0	val_0
+8	val_8	4	val_4
+8	val_8	8	val_8
+8	val_8	0	val_0
+8	val_8	0	val_0
+8	val_8	5	val_5
+8	val_8	2	val_2
+8	val_8	5	val_5
+8	val_8	9	val_9
+8	val_8	5	val_5
+5	val_5	0	val_0
+5	val_5	4	val_4
+5	val_5	8	val_8
+5	val_5	0	val_0
+5	val_5	0	val_0
+5	val_5	5	val_5
+5	val_5	2	val_2
+5	val_5	5	val_5
+5	val_5	9	val_9
+5	val_5	5	val_5
+4	val_4	0	val_0
+4	val_4	4	val_4
+4	val_4	8	val_8
+4	val_4	0	val_0
+4	val_4	0	val_0
+4	val_4	5	val_5
+4	val_4	2	val_2
+4	val_4	5	val_5
+4	val_4	9	val_9
+4	val_4	5	val_5
+2	val_2	0	val_0
+2	val_2	4	val_4
+2	val_2	8	val_8
+2	val_2	0	val_0
+2	val_2	0	val_0
+2	val_2	5	val_5
+2	val_2	2	val_2
+2	val_2	5	val_5
+2	val_2	9	val_9
+2	val_2	5	val_5
+0	val_0	0	val_0
+0	val_0	4	val_4
+0	val_0	8	val_8
+0	val_0	0	val_0
+0	val_0	0	val_0
+0	val_0	5	val_5
+0	val_0	2	val_2
+0	val_0	5	val_5
+0	val_0	9	val_9
+0	val_0	5	val_5
+5	val_5	0	val_0
+5	val_5	4	val_4
+5	val_5	8	val_8
+5	val_5	0	val_0
+5	val_5	0	val_0
+5	val_5	5	val_5
+5	val_5	2	val_2
+5	val_5	5	val_5
+5	val_5	9	val_9
+5	val_5	5	val_5
+0	val_0	0	val_0
+0	val_0	4	val_4
+0	val_0	8	val_8
+0	val_0	0	val_0
+0	val_0	0	val_0
+0	val_0	5	val_5
+0	val_0	2	val_2
+0	val_0	5	val_5
+0	val_0	9	val_9
+0	val_0	5	val_5
+0	val_0	0	val_0
+0	val_0	4	val_4
+0	val_0	8	val_8
+0	val_0	0	val_0
+0	val_0	0	val_0
+0	val_0	5	val_5
+0	val_0	2	val_2
+0	val_0	5	val_5
+0	val_0	9	val_9
+0	val_0	5	val_5