You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by ch...@apache.org on 2012/10/30 18:43:10 UTC

svn commit: r1403800 - in /pig/branches/branch-0.11: CHANGES.txt src/org/apache/pig/newplan/logical/rules/ColumnPruneVisitor.java test/org/apache/pig/test/TestNewPlanColumnPrune.java

Author: cheolsoo
Date: Tue Oct 30 17:43:09 2012
New Revision: 1403800

URL: http://svn.apache.org/viewvc?rev=1403800&view=rev
Log:
PIG-2968 ColumnMapKeyPrune fails to prune a subtree inside foreach (knoguchi via cheolsoo)

Modified:
    pig/branches/branch-0.11/CHANGES.txt
    pig/branches/branch-0.11/src/org/apache/pig/newplan/logical/rules/ColumnPruneVisitor.java
    pig/branches/branch-0.11/test/org/apache/pig/test/TestNewPlanColumnPrune.java

Modified: pig/branches/branch-0.11/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.11/CHANGES.txt?rev=1403800&r1=1403799&r2=1403800&view=diff
==============================================================================
--- pig/branches/branch-0.11/CHANGES.txt (original)
+++ pig/branches/branch-0.11/CHANGES.txt Tue Oct 30 17:43:09 2012
@@ -310,6 +310,8 @@ OPTIMIZATIONS
 
 BUG FIXES
 
+PIG-2968: ColumnMapKeyPrune fails to prune a subtree inside foreach (knoguchi via cheolsoo)
+
 PIG-2999: Regression after PIG-2975: BinInterSedesTupleRawComparator secondary sort failing (knoguchi via azaroth)
 
 PIG-2998: Fix TestScriptLanguage and TestMacroExpansion (cheolsoo via jcoveney)

Modified: pig/branches/branch-0.11/src/org/apache/pig/newplan/logical/rules/ColumnPruneVisitor.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.11/src/org/apache/pig/newplan/logical/rules/ColumnPruneVisitor.java?rev=1403800&r1=1403799&r2=1403800&view=diff
==============================================================================
--- pig/branches/branch-0.11/src/org/apache/pig/newplan/logical/rules/ColumnPruneVisitor.java (original)
+++ pig/branches/branch-0.11/src/org/apache/pig/newplan/logical/rules/ColumnPruneVisitor.java Tue Oct 30 17:43:09 2012
@@ -448,7 +448,7 @@ public class ColumnPruneVisitor extends 
         LogicalPlan p = (LogicalPlan)op.getPlan();
         List<Operator> ll = p.getPredecessors(op);
         if (ll != null) {
-            for(Operator pred: ll) {
+            for(Operator pred: ll.toArray(new Operator[ll.size()])) {
                 removeSubTree((LogicalRelationalOperator)pred);
             }
         }

Modified: pig/branches/branch-0.11/test/org/apache/pig/test/TestNewPlanColumnPrune.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.11/test/org/apache/pig/test/TestNewPlanColumnPrune.java?rev=1403800&r1=1403799&r2=1403800&view=diff
==============================================================================
--- pig/branches/branch-0.11/test/org/apache/pig/test/TestNewPlanColumnPrune.java (original)
+++ pig/branches/branch-0.11/test/org/apache/pig/test/TestNewPlanColumnPrune.java Tue Oct 30 17:43:09 2012
@@ -390,7 +390,26 @@ public class TestNewPlanColumnPrune exte
         
         assertTrue(expected.isEqual(newLogicalPlan));
     }
-    
+
+    public void testPruneSubTreeForEach() throws Exception  {
+        String query = "a =load 'd.txt' as (id, v1);" +
+            "b = group a by id;" +
+            "c = foreach b { d = a.v1; " +
+                          " e = distinct d; " +
+                          " generate group, e; };" +
+            "f = foreach c generate group ;" +
+            "store f into 'empty';";
+        LogicalPlan newLogicalPlan = buildPlan(query);
+        PlanOptimizer optimizer = new MyPlanOptimizer(newLogicalPlan, 3);
+        try {
+            optimizer.optimize();
+        } catch (Exception e) {
+            //PIG-2968 throws ConcurrentModificationException
+            e.printStackTrace();
+            fail("Unexpected Exception: " + e);
+        }
+    }
+
     public class MyPlanOptimizer extends LogicalPlanOptimizer {
 
         protected MyPlanOptimizer(OperatorPlan p,  int iterations) {