Venu Satuluri created PIG-3581:
----------------------------------

             Summary: 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


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#6144)

Reply via email to