[ https://issues.apache.org/jira/browse/PIG-3581?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13855961#comment-13855961 ]
Aniket Mokashi commented on PIG-3581: ------------------------------------- bq. Is it supported to define a local scalar expression inside a nested foreach? e.g. expr = 'bar'; Yes. https://github.com/apache/pig/blob/branch-0.12/src/org/apache/pig/parser/QueryParser.g#L923 bq. If so, can you fix the regression? Yes > Incorrect scope resolution with nested foreach > ---------------------------------------------- > > Key: PIG-3581 > URL: https://issues.apache.org/jira/browse/PIG-3581 > Project: Pig > Issue Type: Bug > Reporter: Venu Satuluri > Assignee: Aniket Mokashi > Fix For: 0.13.0 > > Attachments: PIG-3581-1.patch, PIG-3581-2.patch > > > Consider the following script: > {code} > A = LOAD 'test_data' AS (a: int, b: int); > C = FOREACH A GENERATE *; > B = FOREACH (GROUP A BY a) { > C = FILTER A BY b % 2 == 0; > D = FILTER A BY b % 2 == 1; > GENERATE group AS a, A.b AS every, C.b AS even, D.b AS odd; > }; > DESCRIBE B; > {code} > Notice that C is defined both inside the nested foreach as well as outside. I > would expect that in the GENERATE inside the nested FOREACH, the C that is > used will be the one that is defined inside. If that is not so, I think at > least a warning is due. > However, currently Pig silently assumes that the C you mean one is the one > that is defined *outside* the nested FOREACH. > Hence, the result of "DESCRIBE B" looks as follows: > {code} > B: { > a: int, > every: { > ( > b: int > ) > }, > even: int, > odd: { > ( > b: int > ) > } > } > {code} > If I remove the definition of C that is outside the foreach, then I get the > following for "DESCRIBE B": > {code} > B: { > a: int, > every: { > ( > b: int > ) > }, > even: { > ( > b: int > ) > }, > odd: { > ( > b: int > ) > } > } > {code} -- This message was sent by Atlassian JIRA (v6.1.5#6160)