You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by na...@apache.org on 2013/04/24 19:36:39 UTC

svn commit: r1471553 - in /hive/trunk/ql/src: java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java test/queries/clientpositive/allcolref_in_udf.q test/results/clientpositive/allcolref_in_udf.q.out

Author: namit
Date: Wed Apr 24 17:36:39 2013
New Revision: 1471553

URL: http://svn.apache.org/r1471553
Log:
HIVE-4181 Star argument without table alias for UDTF is not working
(Navis via namit)


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

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java?rev=1471553&r1=1471552&r2=1471553&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java Wed Apr 24 17:36:39 2013
@@ -2428,6 +2428,7 @@ public class SemanticAnalyzer extends Ba
       posn++;
     }
 
+    boolean subQuery = qb.getParseInfo().getIsSubQ();
     boolean isInTransform = (selExprList.getChild(posn).getChild(0).getType() ==
         HiveParser.TOK_TRANSFORM);
     if (isInTransform) {
@@ -2463,6 +2464,10 @@ public class SemanticAnalyzer extends Ba
         unparseTranslator.addIdentifierTranslation((ASTNode) udtfExpr
             .getChild(0));
       }
+      if (isUDTF && (selectStar = udtfExprType == HiveParser.TOK_FUNCTIONSTAR)) {
+        genColListRegex(".*", null, (ASTNode) udtfExpr.getChild(0),
+            col_list, inputRR, pos, out_rwsch, qb.getAliases(), subQuery);
+      }
     }
 
     if (isUDTF) {
@@ -2567,7 +2572,6 @@ public class SemanticAnalyzer extends Ba
 
       }
 
-      boolean subQuery = qb.getParseInfo().getIsSubQ();
       if (expr.getType() == HiveParser.TOK_ALLCOLREF) {
         pos = genColListRegex(".*", expr.getChildCount() == 0 ? null
             : getUnescapedName((ASTNode) expr.getChild(0)).toLowerCase(),

Modified: hive/trunk/ql/src/test/queries/clientpositive/allcolref_in_udf.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/allcolref_in_udf.q?rev=1471553&r1=1471552&r2=1471553&view=diff
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/allcolref_in_udf.q (original)
+++ hive/trunk/ql/src/test/queries/clientpositive/allcolref_in_udf.q Wed Apr 24 17:36:39 2013
@@ -14,3 +14,8 @@ select stack(2, *) as (e1,e2,e3) from (
 select stack(2, *) as (e1,e2,e3) from (
   select concat(*), concat(a.*), concat(b.*), concat(a.*, b.key), concat(a.key, b.*)
   from src a join src b on a.key+1=b.key where a.key < 100) x limit 10;
+
+-- HIVE-4181 TOK_FUNCTIONSTAR for UDTF
+create table allcolref as select array(key, value) from src;
+explain select explode(*) as x from allcolref limit 10;
+select explode(*) as x from allcolref limit 10;

Modified: hive/trunk/ql/src/test/results/clientpositive/allcolref_in_udf.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/allcolref_in_udf.q.out?rev=1471553&r1=1471552&r2=1471553&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/allcolref_in_udf.q.out (original)
+++ hive/trunk/ql/src/test/results/clientpositive/allcolref_in_udf.q.out Wed Apr 24 17:36:39 2013
@@ -186,3 +186,68 @@ POSTHOOK: Input: default@src
 8val_89	NULL	9val_9
 9val_910val_10	9val_9	10val_10
 9val_910	NULL	10val_10
+PREHOOK: query: -- HIVE-4181 TOK_FUNCTIONSTAR for UDTF
+create table allcolref as select array(key, value) from src
+PREHOOK: type: CREATETABLE_AS_SELECT
+PREHOOK: Input: default@src
+POSTHOOK: query: -- HIVE-4181 TOK_FUNCTIONSTAR for UDTF
+create table allcolref as select array(key, value) from src
+POSTHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@allcolref
+PREHOOK: query: explain select explode(*) as x from allcolref limit 10
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select explode(*) as x from allcolref limit 10
+POSTHOOK: type: QUERY
+ABSTRACT SYNTAX TREE:
+  (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME allcolref))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTIONSTAR explode) x)) (TOK_LIMIT 10)))
+
+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:
+        allcolref 
+          TableScan
+            alias: allcolref
+            Select Operator
+              expressions:
+                    expr: _c0
+                    type: array<string>
+              outputColumnNames: _col0
+              UDTF Operator
+                function name: explode
+                Limit
+                  File Output Operator
+                    compressed: false
+                    GlobalTableId: 0
+                    table:
+                        input format: org.apache.hadoop.mapred.TextInputFormat
+                        output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: 10
+
+
+PREHOOK: query: select explode(*) as x from allcolref limit 10
+PREHOOK: type: QUERY
+PREHOOK: Input: default@allcolref
+#### A masked pattern was here ####
+POSTHOOK: query: select explode(*) as x from allcolref limit 10
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@allcolref
+#### A masked pattern was here ####
+238
+val_238
+86
+val_86
+311
+val_311
+27
+val_27
+165
+val_165