Hi, For our cost based optimizer for a given query plan we need to generate alternative query plans and evaluate them based on their estimated cost. As a result of that, I want to clone a logical plan. I thought LogicalPlanCloner is meant for that, but it doesnt seem to work. I added this simple test case in TestLogicalPlanBuilder.java
public void testLogicalPlanCloneHelper() throws CloneNotSupportedException{ LogicalPlan lp = buildPlan("C = join ( load 'A') by $0, (load 'B') by $0;"); LogicalPlanCloner cloner = new LogicalPlanCloner(lp); cloner.getClonedPlan(); } and this fails with the following stacktrace: java.lang.NullPointerException at org.apache.pig.impl.logicalLayer.LOVisitor.visit(LOVisitor.java:171) at org.apache.pig.impl.logicalLayer.PlanSetter.visit(PlanSetter.java:63) at org.apache.pig.impl.logicalLayer.LOJoin.visit(LOJoin.java:213) at org.apache.pig.impl.logicalLayer.LOJoin.visit(LOJoin.java:45) at org.apache.pig.impl.plan.DepthFirstWalker.depthFirst(DepthFirstWalker.java:67) at org.apache.pig.impl.plan.DepthFirstWalker.depthFirst(DepthFirstWalker.java:69) 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.LogicalPlanCloneHelper.getClonedPlan(LogicalPlanCloneHelper.java:73) at org.apache.pig.impl.logicalLayer.LogicalPlanCloner.getClonedPlan(LogicalPlanCloner.java:46) at org.apache.pig.test.TestLogicalPlanBuilder.testLogicalPlanCloneHelper(TestLogicalPlanBuilder.java:2110) I am debugging this, but wanted to ask if I have hit a bug here or if I am doing something wrong? Thanks, Ashutosh