You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by da...@apache.org on 2010/11/20 01:02:47 UTC

svn commit: r1037088 - in /pig/trunk: CHANGES.txt src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java src/org/apache/pig/newplan/logical/rules/GroupByConstParallelSetter.java test/org/apache/pig/test/TestEvalPipeline2.java

Author: daijy
Date: Sat Nov 20 00:02:47 2010
New Revision: 1037088

URL: http://svn.apache.org/viewvc?rev=1037088&view=rev
Log:
PIG-1729: New logical plan: Dereference does not add into plan after deepCopy

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java
    pig/trunk/src/org/apache/pig/newplan/logical/rules/GroupByConstParallelSetter.java
    pig/trunk/test/org/apache/pig/test/TestEvalPipeline2.java

Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1037088&r1=1037087&r2=1037088&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Sat Nov 20 00:02:47 2010
@@ -220,6 +220,8 @@ PIG-1309: Map-side Cogroup (ashutoshc)
 
 BUG FIXES
 
+PIG-1729: New logical plan: Dereference does not add into plan after deepCopy (daijy)
+
 PIG-1721: New logical plan: script fail when reuse foreach inner alias (daijy)
 
 PIG-1716: New logical plan: LogToPhyTranslationVisitor should translate the structure for regex optimization (daijy)

Modified: pig/trunk/src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java?rev=1037088&r1=1037087&r2=1037088&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java Sat Nov 20 00:02:47 2010
@@ -55,12 +55,14 @@ public class DereferenceExpression exten
         super( "Dereference", plan );
         columns = new ArrayList<Integer>();
         columns.add(colNum);
+        plan.add(this);
     }
 
     public DereferenceExpression(OperatorPlan plan, List<Integer> columnNums) {
         super( "Dereference", plan );
         columns = new ArrayList<Integer>();
         columns.addAll(columnNums);
+        plan.add(this);
     }
 
     /**

Modified: pig/trunk/src/org/apache/pig/newplan/logical/rules/GroupByConstParallelSetter.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/logical/rules/GroupByConstParallelSetter.java?rev=1037088&r1=1037087&r2=1037088&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/logical/rules/GroupByConstParallelSetter.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/logical/rules/GroupByConstParallelSetter.java Sat Nov 20 00:02:47 2010
@@ -55,8 +55,7 @@ public class GroupByConstParallelSetter 
     }
     private final static Log log = LogFactory.getLog(GroupByConstParallelSetter.class);
 
-    public static class GroupAllParallelSetterTransformer extends Transformer {
-        private OperatorPlan plan;
+    public class GroupAllParallelSetterTransformer extends Transformer {
 
         @Override
         public boolean check(OperatorPlan matched) throws FrontendException {
@@ -84,7 +83,6 @@ public class GroupByConstParallelSetter 
 
         @Override
         public void transform(OperatorPlan plan) throws FrontendException {
-            this.plan = ((OperatorSubPlan) plan).getBasePlan();
             Iterator<Operator> iter = plan.getOperators();
             while (iter.hasNext()) {
                 Operator op = iter.next();
@@ -103,7 +101,7 @@ public class GroupByConstParallelSetter 
  
         @Override
         public OperatorPlan reportChanges() {
-            return plan;
+            return new OperatorSubPlan(currentPlan);
         }
     }
 

Modified: pig/trunk/test/org/apache/pig/test/TestEvalPipeline2.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestEvalPipeline2.java?rev=1037088&r1=1037087&r2=1037088&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestEvalPipeline2.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestEvalPipeline2.java Sat Nov 20 00:02:47 2010
@@ -842,4 +842,32 @@ public class TestEvalPipeline2 extends T
         
         assertFalse(iter.hasNext());
     }
+    
+    // See PIG-1729
+    @Test
+    public void testDereferenceInnerPlan() throws Exception{
+        String[] input1 = {
+                "1\t2\t3"
+        };
+        
+        String[] input2 = {
+                "1\t1"
+        };
+        
+        Util.createInputFile(cluster, "table_testDereferenceInnerPlan1", input1);
+        Util.createInputFile(cluster, "table_testDereferenceInnerPlan2", input2);
+        pigServer.registerQuery("a = load 'table_testDereferenceInnerPlan1' as (a0:int, a1:int, a2:int);");
+        pigServer.registerQuery("b = load 'table_testDereferenceInnerPlan2' as (b0:int, b1:int);");
+        pigServer.registerQuery("c = cogroup a by a0, b by b0;");
+        pigServer.registerQuery("d = foreach c generate ((COUNT(a)==0L)?null : a.a0) as d0;");
+        pigServer.registerQuery("e = foreach d generate flatten(d0);");
+        pigServer.registerQuery("f = group e all;");
+        
+        Iterator<Tuple> iter = pigServer.openIterator("f");
+        
+        Tuple t = iter.next();
+        assertTrue(t.toString().equals("(all,{(1)})"));
+        
+        assertFalse(iter.hasNext());
+    }
 }