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