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:44:04 UTC

svn commit: r1088782 - in /pig/trunk: 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:44:04 2011
New Revision: 1088782

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

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java
    pig/trunk/test/org/apache/pig/test/TestNewPlanFilterAboveForeach.java

Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1088782&r1=1088781&r2=1088782&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Mon Apr  4 20:44:04 2011
@@ -387,6 +387,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-1912: non-deterministic output when a file is loaded multiple times (daijy)
 
 PIG-1892: Bug in new logical plan : No output generated even though there are

Modified: pig/trunk/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java?rev=1088782&r1=1088781&r2=1088782&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java Mon Apr  4 20:44:04 2011
@@ -103,6 +103,7 @@ public class BinCondExpression extends L
         //TypeCheckingExpVisitor will ensure that lhs and rhs have same schema
         LogicalFieldSchema argFs = getLhs().getFieldSchema();
         fieldSchema = argFs.deepCopy();
+        fieldSchema.uid = -1;
         
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;

Modified: pig/trunk/test/org/apache/pig/test/TestNewPlanFilterAboveForeach.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestNewPlanFilterAboveForeach.java?rev=1088782&r1=1088781&r2=1088782&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestNewPlanFilterAboveForeach.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestNewPlanFilterAboveForeach.java Mon Apr  4 20:44:04 2011
@@ -429,6 +429,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 );