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

Reply via email to