[ https://issues.apache.org/jira/browse/PIG-3581?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13855959#comment-13855959 ]
Cheolsoo Park commented on PIG-3581: ------------------------------------ {quote} It is going to store the word 'bar' in a file on HDFS and read it back. {quote} Plus, I don't think this is true. See the explain output in 0.11. There is no hdfs reading for 'bar'. It's a constant- {code} c: Store(fakefile:org.apache.pig.builtin.PigStorage) - scope-20 | |---c: New For Each(false)[bag] - scope-19 | | | POUserFunc(org.apache.pig.builtin.COUNT)[long] - scope-13 | | | |---RelationToExpressionProject[bag][*] - scope-12 | | | |---filtered: Filter[bag] - scope-15 | | | | | Equal To[boolean] - scope-18 | | | | | |---Project[chararray][1] - scope-16 | | | | | |---Constant(bar) - scope-17 | | | |---Project[bag][1] - scope-14 | |---b: Package[tuple]{int} - scope-9-------- {code} > 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)