Optimizer throw error on self-joins ----------------------------------- Key: PIG-859 URL: https://issues.apache.org/jira/browse/PIG-859 Project: Pig Issue Type: Bug Components: impl Affects Versions: 0.3.0 Reporter: Ashutosh Chauhan Fix For: 0.4.0
Doing self-join results in exception thrown by Optimizer. Consider the following query {code} grunt> A = load 'a'; grunt> B = Join A by $0, A by $0; grunt> explain B; 2009-06-20 15:51:38,303 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1094: Attempt to insert between two nodes that were not connected. Details at logfile: pig_1245538027026.log {code} Relevant stack-trace from log-file: {code} Caused by: org.apache.pig.impl.plan.optimizer.OptimizerException: ERROR 2047: Internal error. Unable to introduce split operators. at org.apache.pig.impl.logicalLayer.optimizer.ImplicitSplitInserter.transform(ImplicitSplitInserter.java:163) at org.apache.pig.impl.logicalLayer.optimizer.LogicalOptimizer.optimize(LogicalOptimizer.java:163) at org.apache.pig.PigServer.compileLp(PigServer.java:844) at org.apache.pig.PigServer.compileLp(PigServer.java:781) at org.apache.pig.PigServer.getStorePlan(PigServer.java:723) at org.apache.pig.PigServer.explain(PigServer.java:566) ... 8 more Caused by: org.apache.pig.impl.plan.PlanException: ERROR 1094: Attempt to insert between two nodes that were not connected. at org.apache.pig.impl.plan.OperatorPlan.doInsertBetween(OperatorPlan.java:500) at org.apache.pig.impl.plan.OperatorPlan.insertBetween(OperatorPlan.java:480) at org.apache.pig.impl.logicalLayer.optimizer.ImplicitSplitInserter.transform(ImplicitSplitInserter.java:139) ... 13 more {code} A possible workaround is: {code} grunt> A = load 'a'; grunt> B = load 'a'; grunt> C = join A by $0, B by $0; grunt> explain C; {code} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.