Index: ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (revision 4568) +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (working copy) @@ -1526,9 +1526,11 @@ // child can be EXPR AS ALIAS, or EXPR. ASTNode child = (ASTNode) exprList.getChild(i); boolean hasAsClause = (!isInTransform) && (child.getChildCount() == 2); - + // EXPR AS (ALIAS,...) parses, but is only allowed for UDTF's - if (!isUDTF && child.getChildCount() > 2) { + // This check is not needed and invalid when there is a transform b/c the + // AST's are slightly different. + if (!isInTransform && !isUDTF && child.getChildCount() > 2) { throw new SemanticException(ErrorMsg.INVALID_AS.getMsg()); } Index: ql/src/test/queries/clientpositive/transform2.q =================================================================== --- ql/src/test/queries/clientpositive/transform2.q (revision 0) +++ ql/src/test/queries/clientpositive/transform2.q (revision 0) @@ -0,0 +1,2 @@ +-- Transform with a function that has many parameters +SELECT TRANSFORM(substr(key, 1, 2)) USING 'cat' FROM src LIMIT 1; Index: ql/src/test/results/clientpositive/transform2.q.out =================================================================== --- ql/src/test/results/clientpositive/transform2.q.out (revision 0) +++ ql/src/test/results/clientpositive/transform2.q.out (revision 0) @@ -0,0 +1,11 @@ +PREHOOK: query: -- Transform with a function that has many parameters +SELECT TRANSFORM(substr(key, 1, 2)) USING 'cat' FROM src LIMIT 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: file:/data/users/pyang/task/trunk/VENDOR.hive/trunk/build/ql/tmp/366195841/10000 +POSTHOOK: query: -- Transform with a function that has many parameters +SELECT TRANSFORM(substr(key, 1, 2)) USING 'cat' FROM src LIMIT 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: file:/data/users/pyang/task/trunk/VENDOR.hive/trunk/build/ql/tmp/366195841/10000 +23 NULL