Project-Range expression fails inside macro for UDF arguments --------------------------------------------------------------
Key: PIG-2617 URL: https://issues.apache.org/jira/browse/PIG-2617 Project: Pig Issue Type: Bug Components: parser Affects Versions: 0.9.2, 0.10 Reporter: Doug Daniels The Project-Range feature (fieldA..fieldB) fails inside a macro for UDF arguments, but works outside of a macro. For example, this script works: {code} input_data = LOAD 'input_strings.txt' USING PigStorage('\t') AS (x:chararray, y:chararray); output_data = FOREACH input_data GENERATE CONCAT(x..y); {code} but this script fails: {code} define my_macro(incoming) returns outgoing { $outgoing = FOREACH $incoming GENERATE CONCAT(x..y); } input_data = LOAD 'input_strings.txt' USING PigStorage('\t') AS (x:chararray, y:chararray); output_data = my_macro(input_data); {code} with stack trace: Pig Stack Trace --------------- ERROR 1200: <line 6> Failed to mask macro 'my_macro'. Reason: /home/hortonji/pig9/src//org/apache/pig/parser/AliasMasker.g: node from after line 2:46 mismatched tree node: COL_RANGE expecting <UP> macro content: output_data = FOREACH input_data GENERATE CONCAT(x..y); org.apache.pig.impl.logicalLayer.FrontendException: ERROR 1000: Error during parsing. <line 6> Failed to mask macro 'my_macro'. Reason: /home/hortonji/pig9/src//org/apache/pig/parser/AliasMasker.g: node from after line 2:46 mismatched tree node: COL_RANGE expecting <UP> macro content: output_data = FOREACH input_data GENERATE CONCAT(x..y); at org.apache.pig.PigServer$Graph.parseQuery(PigServer.java:1641) at org.apache.pig.PigServer$Graph.registerQuery(PigServer.java:1584) at org.apache.pig.PigServer.registerQuery(PigServer.java:584) at org.apache.pig.tools.grunt.GruntParser.processPig(GruntParser.java:942) at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:386) at org.apache.pig.tools.grunt.GruntParser.loadScript(GruntParser.java:516) at org.apache.pig.tools.grunt.GruntParser.processExplain(GruntParser.java:314) at org.apache.pig.tools.grunt.GruntParser.processExplain(GruntParser.java:288) at org.apache.pig.tools.pigscript.parser.PigScriptParser.Explain(PigScriptParser.java:665) at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:325) at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:188) at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:164) at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:84) at org.apache.pig.Main.run(Main.java:464) at org.apache.pig.Main.main(Main.java:111) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.hadoop.util.RunJar.main(RunJar.java:192) Caused by: Failed to parse: <line 6> Failed to mask macro 'my_macro'. Reason: /home/hortonji/pig9/src//org/apache/pig/parser/AliasMasker.g: node from after line 2:46 mismatched tree node: COL_RANGE expecting <UP> macro content: output_data = FOREACH input_data GENERATE CONCAT(x..y); at org.apache.pig.parser.PigMacro.maskAlias(PigMacro.java:254) at org.apache.pig.parser.PigMacro.inline(PigMacro.java:101) at org.apache.pig.parser.PigMacro.macroInline(PigMacro.java:456) at org.apache.pig.parser.QueryParserDriver.inlineMacro(QueryParserDriver.java:279) at org.apache.pig.parser.QueryParserDriver.expandMacro(QueryParserDriver.java:268) at org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:165) at org.apache.pig.PigServer$Graph.parseQuery(PigServer.java:1633) ... 19 more ================================================================================ -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira