[ 
https://issues.apache.org/jira/browse/PIG-693?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Thejas M Nair updated PIG-693:
------------------------------

    Attachment: 693.patch

- All subclasses of LogicalOperator(LOP) (except LOConst,LOProject) no longer 
maintain a local reference of their inputs. 
getOperand()/getLhs()/getArguments() etc will access the  predecessor in the 
graph each time. This will avoid problems caused by predecessor and input 
arguments reference going out of sync.
- In above classes, the functions for setting the input arguments have been 
removed. The constructor also no longer takes arguments as input.
- LogToPhyTranslationVisitor - Checking if getPredecessor() is null before 
calling getOperand().getType(). (Fixes a negative test case failure).
- TypeCheckingVisitor - Insertion of casts in LOP s uses the  
OperatorPlan.insertBetween() function. Common logic used to insert cast in LOPs 
have been moved to new insertCast(..) function.
- LOConst does not have above change because its input is contained within the 
object, not on the graph. LOProject does not change because input  need not be 
predecessor in graph if input is relational operator.


> Parameter to UDF which is an alias returned in another UDF in nested foreach 
> causes incorrect results
> -----------------------------------------------------------------------------------------------------
>
>                 Key: PIG-693
>                 URL: https://issues.apache.org/jira/browse/PIG-693
>             Project: Pig
>          Issue Type: Bug
>          Components: impl
>    Affects Versions: 1.0.0
>            Reporter: Viraj Bhat
>            Assignee: Thejas M Nair
>         Attachments: 693.patch, one.txt, REPLACEALL.java, URLDECODE.java
>
>
> Consider the following Pig Script
> {code}
> register myudf.jar;
> A = load 'one.txt' using PigStorage() as ( one: int ); --use this dummy file 
> to start execution
> B = foreach A {
>         dec = myudf.URLDECODE('hello');
>         str1 = myudf.REPLACEALL(dec, '[\\u0000-\\u0020]', ' '); -- ERROR
>         str2 = myudf.REPLACEALL('hello', '[\\u0000-\\u0020]', ' ');
>         generate
>                 dec,
>                 str1,
>                 str2;
>         };
> describe B;
> dump B;
> {code}
> where one.txt is a file which contains number one (1) for starting execution 
> of the Pig script!!
> {code}
> describe B; 
> {code}
>  returns the following:
> B: {urldecode_9: chararray,replaceall_urldecode_10_11: 
> chararray,replaceall_12: chararray}
> {code}
> dump B;
> {code}
> returns 
> (hello,[\u0000-\u0020],hello)
> The result should be:
> There is a workaround for the same, 
> {code}
> register myudf.jar;
> A = load 'one.txt' using PigStorage() as ( one: int );
> B = foreach A {
>         dec = myudf.URLDECODE('hello');
>         generate
>                 dec as dec,
>                 myudf.REPLACEALL(dec, '[\\u0000-\\u0020]', ' ') as str1,
>                 myudf.REPLACEALL('hello', '[\\u0000-\\u0020]', ' ') as str2;
>         };
> describe B;
> dump B;
> {code}
> where 
> {code}
> dump B;
> {code}
> returns (hello,hello,hello)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to