[ https://issues.apache.org/jira/browse/PIG-2563?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13222678#comment-13222678 ]
Dmitriy V. Ryaboy commented on PIG-2563: ---------------------------------------- Cheap code style comments: The if/else blocks should either be bracketed by {}s, or converted to fieldSchema.uid = needNewUid? LogicalExpression.getNextUid() : innerLoads.get(0).getProjection().getFieldSchema().uid; (Otherwise we get oddness when people try to edit the code and get confused about what is and isn't inside the if/else blocks). More expensive code content comments: Feels wrong to rely on checking for the parent, determining if it's a foreach, and returning a boolean to enforce id uniqueness. It's entirely possible that someone touches one of these operators without going through findReachableInnerLoad.... and still needs a unique id. Can we ensure the id is unique to begin with, when the tree is constructed? > IndexOutOfBoundsException: while projecting fields from a bag > ------------------------------------------------------------- > > Key: PIG-2563 > URL: https://issues.apache.org/jira/browse/PIG-2563 > Project: Pig > Issue Type: Bug > Affects Versions: 0.9.1, 0.10 > Reporter: Vivek Padmanabhan > Assignee: Daniel Dai > Fix For: 0.10, 0.11 > > Attachments: PIG-2563-1.patch > > > The below script fails with Pig 0.9 / Pig 0.10 but works fine for Pig 0.8. > {code} > A = load 'i1' as (a,b,c:chararray); > B = load 'i2' as (d,e,f:chararray); > C = cogroup A by a, B by d; > D = foreach C { > tmp = B.d; > tmp_dis = distinct tmp; > generate A,B,tmp_dis ; } ; > E = foreach D generate B.(d,e) as v; > dump E; > {code} > The script fails with the below exception. Looks like DereferenceExpression > is using wrong schema to build inner schema. > java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 > at java.util.ArrayList.RangeCheck(ArrayList.java:547) > at java.util.ArrayList.get(ArrayList.java:322) > at > org.apache.pig.newplan.logical.relational.LogicalSchema.getField(LogicalSchema.java:653) > at > org.apache.pig.newplan.logical.expression.DereferenceExpression.getFieldSchema(DereferenceExpression.java:167) > at > org.apache.pig.newplan.logical.relational.LOGenerate.getSchema(LOGenerate.java:88) > at > org.apache.pig.newplan.logical.visitor.TypeCheckingRelVisitor.visit(TypeCheckingRelVisitor.java:160) > at > org.apache.pig.newplan.logical.relational.LOGenerate.accept(LOGenerate.java:242) -- 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