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 2011/04/04 22:46:15 UTC

svn commit: r1088783 - in /pig/branches/branch-0.8: CHANGES.txt src/org/apache/pig/newplan/logical/expression/BinCondExpression.java test/org/apache/pig/test/TestNewPlanFilterAboveForeach.java

Author: daijy
Date: Mon Apr  4 20:46:15 2011
New Revision: 1088783

URL: http://svn.apache.org/viewvc?rev=1088783&view=rev
Log:
PIG-1935: New logical plan: Should not push up filter in front of Bincond

Modified:
    pig/branches/branch-0.8/CHANGES.txt
    pig/branches/branch-0.8/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java
    pig/branches/branch-0.8/test/org/apache/pig/test/TestNewPlanFilterAboveForeach.java

Modified: pig/branches/branch-0.8/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.8/CHANGES.txt?rev=1088783&r1=1088782&r2=1088783&view=diff
==============================================================================
--- pig/branches/branch-0.8/CHANGES.txt (original)
+++ pig/branches/branch-0.8/CHANGES.txt Mon Apr  4 20:46:15 2011
@@ -229,6 +229,8 @@ PIG-1309: Map-side Cogroup (ashutoshc)
 
 BUG FIXES
 
+PIG-1935: New logical plan: Should not push up filter in front of Bincond (daijy)
+
 PIG-1861: The pig script stored in the Hadoop History logs is stored as a concatenated string without whitespace this causes problems when attempting to extract and execute the script (rding) 
 
 PIG-1912: non-deterministic output when a file is loaded multiple times (daijy)

Modified: pig/branches/branch-0.8/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.8/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java?rev=1088783&r1=1088782&r2=1088783&view=diff
==============================================================================
--- pig/branches/branch-0.8/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java (original)
+++ pig/branches/branch-0.8/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java Mon Apr  4 20:46:15 2011
@@ -98,6 +98,7 @@ public class BinCondExpression extends L
         if (fieldSchema!=null)
             return fieldSchema;
         fieldSchema = getLhs().getFieldSchema().deepCopy();
+        fieldSchema.uid = -1;
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }

Modified: pig/branches/branch-0.8/test/org/apache/pig/test/TestNewPlanFilterAboveForeach.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.8/test/org/apache/pig/test/TestNewPlanFilterAboveForeach.java?rev=1088783&r1=1088782&r2=1088783&view=diff
==============================================================================
--- pig/branches/branch-0.8/test/org/apache/pig/test/TestNewPlanFilterAboveForeach.java (original)
+++ pig/branches/branch-0.8/test/org/apache/pig/test/TestNewPlanFilterAboveForeach.java Mon Apr  4 20:46:15 2011
@@ -415,6 +415,21 @@ public class TestNewPlanFilterAboveForea
         Operator foreach = newLogicalPlan.getPredecessors(store).get(0);
         Assert.assertTrue( foreach instanceof LOForEach );
     }
+    
+    // See PIG-1935
+    @Test
+    public void testPushUpFilterAboveBinCond() throws Exception {
+        planTester.buildPlan("data = LOAD 'data.txt' as (referrer:chararray, canonical_url:chararray, ip:chararray);");
+        planTester.buildPlan("best_url = FOREACH data GENERATE ((canonical_url != '' and canonical_url is not null) ? canonical_url : referrer) AS url, ip;");
+        planTester.buildPlan("filtered = FILTER best_url BY url == 'badsite.com';");
+        org.apache.pig.impl.logicalLayer.LogicalPlan plan = planTester.buildPlan("store filtered into 'empty';");
+
+        LogicalPlan newLogicalPlan = migrateAndOptimizePlan( plan );
+
+        Operator store = newLogicalPlan.getSinks().get( 0 );
+        Operator filter = newLogicalPlan.getPredecessors(store).get(0);
+        Assert.assertTrue( filter instanceof LOFilter );
+    }
 
     private LogicalPlan migrateAndOptimizePlan(org.apache.pig.impl.logicalLayer.LogicalPlan plan) throws FrontendException {
         LogicalPlan newLogicalPlan = migratePlan( plan );