Author: daijy
Date: Sat Jan 30 02:24:57 2010
New Revision: 904713

URL: http://svn.apache.org/viewvc?rev=904713&view=rev
Log:
PIG-1212: LogicalPlan.replaceAndAddSucessors produce wrong result when 
successors are null

Modified:
    hadoop/pig/trunk/CHANGES.txt
    hadoop/pig/trunk/src/org/apache/pig/impl/plan/OperatorPlan.java
    hadoop/pig/trunk/test/org/apache/pig/test/TestOperatorPlan.java

Modified: hadoop/pig/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/CHANGES.txt?rev=904713&r1=904712&r2=904713&view=diff
==============================================================================
--- hadoop/pig/trunk/CHANGES.txt (original)
+++ hadoop/pig/trunk/CHANGES.txt Sat Jan 30 02:24:57 2010
@@ -157,6 +157,8 @@
 PIG-1189: StoreFunc UDF should ship to the backend automatically without
 "register" (daijy)
 
+PIG-1212: LogicalPlan.replaceAndAddSucessors produce wrong result when 
successors are null (daijy)
+
 Release 0.6.0 - Unreleased
 
 INCOMPATIBLE CHANGES

Modified: hadoop/pig/trunk/src/org/apache/pig/impl/plan/OperatorPlan.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/impl/plan/OperatorPlan.java?rev=904713&r1=904712&r2=904713&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/impl/plan/OperatorPlan.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/impl/plan/OperatorPlan.java Sat Jan 30 
02:24:57 2010
@@ -864,7 +864,9 @@
            }
        }
        mFromEdges.removeKey(node);
-       mFromEdges.put(node,newSuccessors);
+       if (!newSuccessors.isEmpty()) {
+           mFromEdges.put(node,newSuccessors);
+       }
     }    
 
     // removes entry  for predecessor in list of predecessors of node, 
@@ -885,7 +887,9 @@
            }
        }
        mToEdges.removeKey(node);
-       mToEdges.put(node,newPredecessors);
+       if (!newPredecessors.isEmpty()) {
+           mToEdges.put(node,newPredecessors);
+       }
     }
     
     /**

Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestOperatorPlan.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestOperatorPlan.java?rev=904713&r1=904712&r2=904713&view=diff
==============================================================================
--- hadoop/pig/trunk/test/org/apache/pig/test/TestOperatorPlan.java (original)
+++ hadoop/pig/trunk/test/org/apache/pig/test/TestOperatorPlan.java Sat Jan 30 
02:24:57 2010
@@ -17,6 +17,8 @@
  */
 package org.apache.pig.test;
 
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -2948,5 +2950,38 @@
         
     }
 
+    // See PIG-1212
+    @Test
+    public void testPushBefore2() throws Exception {
+        TPlan plan = new TPlan();
+        TOperator[] ops = new TOperator[6];
+        
+        ops[0] = new SingleOperator("Load0");
+        ops[1] = new SingleOperator("Load1");
+        ops[2] = new SingleOperator("ForEach0");
+        ops[3] = new SingleOperator("ForEach1");
+        ops[4] = new MultiOperator("Join");
+        ops[5] = new SingleOperator("Filter");
+        
+        for (int i=0;i<6;i++)
+               plan.add(ops[i]);
+        
+        plan.connect(ops[0], ops[2]);
+        plan.connect(ops[1], ops[3]);
+        plan.connect(ops[2], ops[4]);
+        plan.connect(ops[3], ops[4]);
+        plan.connect(ops[4], ops[5]);
+        
+        try {
+            plan.pushBefore(ops[4], ops[5], 0);
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            PrintStream ps = new PrintStream(baos);
+            PlanPrinter<TOperator, TPlan> planPrinter = new 
PlanPrinter<TOperator, TPlan>(ps, plan);
+            planPrinter.visit();
+            assertFalse(baos.toString().equals(""));
+        } catch (PlanException pe) {
+        }        
+    }
+
 }
 


Reply via email to