[
https://issues.apache.org/jira/browse/PIG-1132?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12787716#action_12787716
]
Daniel Dai commented on PIG-1132:
---------------------------------
Yes, it could happen for any logical operators after Load. The key issue for
this problem is OperatorPlan.insertBetween assume logical plan in a consistent
state. What I want to do here is inserting a LOForEach after LOLoad if the
loader do not support pruning. I will need to achieve this in two steps:
1. insert a LOForEach after LoLoad
2. prune columns the logical operator below
I have to leave the logical plan in an inconsistent state in the middle. If I
insert LOForEach first, then the underlying logical operator has not been
pruned yet; If I prune underlying logical operator first, then there is a
schema gap between underlying logical operator and LOLoad. Both situations are
not allowed for insertBetween. I have to use a trick to get around this problem.
> Column Pruner issues in dealing with unprunable loader
> ------------------------------------------------------
>
> Key: PIG-1132
> URL: https://issues.apache.org/jira/browse/PIG-1132
> Project: Pig
> Issue Type: Bug
> Affects Versions: 0.4.0
> Reporter: Daniel Dai
> Assignee: Daniel Dai
> Fix For: 0.6.0
>
> Attachments: PIG-1132-1.patch, PIG-1132-2.patch
>
>
> The following script fail:
> {code}
> a = load '1.txt' using BinStorage() as (a0, a1, a2);
> b = foreach a generate a2, a0, a1;
> c = foreach b generate a0, a2;
> explain c;
> {code}
> Error message:
> ERROR 2163: Error during fixing projections. Could not locate replacement
> column for column: 1 in the new predecessor at
> org.apache.pig.impl.logicalLayer.ProjectFixerUpper.visit(ProjectFixerUpper.java:262)
> at
> org.apache.pig.impl.logicalLayer.LOProject.visit(LOProject.java:404)
> at org.apache.pig.impl.logicalLayer.LOProject.visit(LOProject.java:58)
> at
> org.apache.pig.impl.plan.DepthFirstWalker.depthFirst(DepthFirstWalker.java:67)
> at
> org.apache.pig.impl.plan.DepthFirstWalker.walk(DepthFirstWalker.java:50)
> at org.apache.pig.impl.plan.PlanVisitor.visit(PlanVisitor.java:51)
> at
> org.apache.pig.impl.logicalLayer.LOForEach.rewire(LOForEach.java:770)
> ... 19 more
> Also even we fix the exception, the result is wrong.
> Thanks Thejas for finding a reproducible test case for PigLatin
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.