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 02:07:06 UTC

svn commit: r1037100 - in /pig/trunk: CHANGES.txt src/org/apache/pig/newplan/logical/relational/LOGenerate.java src/org/apache/pig/newplan/logical/rules/ColumnPruneVisitor.java test/org/apache/pig/test/TestEvalPipeline2.java

Author: daijy
Date: Sat Nov 20 01:07:05 2010
New Revision: 1037100

URL: http://svn.apache.org/viewvc?rev=1037100&view=rev
Log:
PIG-1725: New logical plan: uidOnlySchema bug in LOGenerate

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/src/org/apache/pig/newplan/logical/relational/LOGenerate.java
    pig/trunk/src/org/apache/pig/newplan/logical/rules/ColumnPruneVisitor.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=1037100&r1=1037099&r2=1037100&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Sat Nov 20 01:07:05 2010
@@ -220,6 +220,8 @@ PIG-1309: Map-side Cogroup (ashutoshc)
 
 BUG FIXES
 
+PIG-1725: New logical plan: uidOnlySchema bug in LOGenerate (daijy)
+
 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)

Modified: pig/trunk/src/org/apache/pig/newplan/logical/relational/LOGenerate.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOGenerate.java?rev=1037100&r1=1037099&r2=1037100&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/logical/relational/LOGenerate.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/logical/relational/LOGenerate.java Sat Nov 20 01:07:05 2010
@@ -167,7 +167,7 @@ public class LOGenerate extends LogicalR
             
             // If the schema is generated by user defined schema, keep uid
             if (expSchema==null) {
-                LogicalSchema uidOnlySchema = schema.mergeUid(uidOnlySchemas.get(i));
+                LogicalSchema uidOnlySchema = planSchema.mergeUid(uidOnlySchemas.get(i));
                 uidOnlySchemas.set(i, uidOnlySchema);
             }
             outputPlanSchemas.add(planSchema);

Modified: pig/trunk/src/org/apache/pig/newplan/logical/rules/ColumnPruneVisitor.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/logical/rules/ColumnPruneVisitor.java?rev=1037100&r1=1037099&r2=1037100&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/logical/rules/ColumnPruneVisitor.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/logical/rules/ColumnPruneVisitor.java Sat Nov 20 01:07:05 2010
@@ -344,6 +344,10 @@ public class ColumnPruneVisitor extends 
         Set<Integer> inputsRemoved = new HashSet<Integer>();
         List<LogicalSchema> outputPlanSchemas = new ArrayList<LogicalSchema>();
         List<LogicalSchema> uidOnlySchemas = new ArrayList<LogicalSchema>();
+        List<LogicalSchema> userDefinedSchemas = null;
+        
+        if (gen.getUserDefinedSchema()!=null)
+            userDefinedSchemas = new ArrayList<LogicalSchema>();
         
         for (int i=0;i<genPlans.size();i++) {
             LogicalExpressionPlan genPlan = genPlans.get(i);
@@ -351,6 +355,9 @@ public class ColumnPruneVisitor extends 
                 flattenList.add(gen.getFlattenFlags()[i]);
                 outputPlanSchemas.add(gen.getOutputPlanSchemas().get(i));
                 uidOnlySchemas.add(gen.getUidOnlySchemas().get(i));
+                if (gen.getUserDefinedSchema()!=null) {
+                    userDefinedSchemas.add(gen.getUserDefinedSchema().get(i));
+                }
                 List<Operator> sinks = genPlan.getSinks();
                 for(Operator s: sinks) {
                     if (s instanceof ProjectExpression) {
@@ -379,6 +386,7 @@ public class ColumnPruneVisitor extends 
         gen.setFlattenFlags(flatten);
         gen.setOutputPlanSchemas(outputPlanSchemas);
         gen.setUidOnlySchemas(uidOnlySchemas);
+        gen.setUserDefinedSchema(userDefinedSchemas);
         
         for (LogicalExpressionPlan genPlanToRemove : genPlansToRemove) {
             genPlans.remove(genPlanToRemove);

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=1037100&r1=1037099&r2=1037100&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestEvalPipeline2.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestEvalPipeline2.java Sat Nov 20 01:07:05 2010
@@ -870,4 +870,25 @@ public class TestEvalPipeline2 extends T
         
         assertFalse(iter.hasNext());
     }
+    
+    @Test
+    // See PIG-1725
+    public void testLOGenerateSchema() throws Exception{
+        String[] input1 = {
+                "1\t2\t{(1)}",
+        };
+        
+        Util.createInputFile(cluster, "table_testLOGenerateSchema", input1);
+        pigServer.registerQuery("a = load 'table_testLOGenerateSchema' as (a0:int, a1, a2:bag{});");
+        pigServer.registerQuery("b = foreach a generate a0 as b0, a1 as b1, flatten(a2) as b2:int;");
+        pigServer.registerQuery("c = filter b by b0==1;");
+        pigServer.registerQuery("d = foreach c generate b0+1, b2;");
+        
+        Iterator<Tuple> iter = pigServer.openIterator("d");
+        
+        Tuple t = iter.next();
+        assertTrue(t.toString().equals("(2,1)"));
+        
+        assertFalse(iter.hasNext());
+    }
 }