Author: sms
Date: Mon Jul 13 23:36:40 2009
New Revision: 793750

URL: http://svn.apache.org/viewvc?rev=793750&view=rev
Log:
PIG-877: Push up filter does not account for added columns in foreach

Modified:
    hadoop/pig/trunk/CHANGES.txt
    
hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/optimizer/PushUpFilter.java
    hadoop/pig/trunk/test/org/apache/pig/test/TestPushUpFilter.java

Modified: hadoop/pig/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/CHANGES.txt?rev=793750&r1=793749&r2=793750&view=diff
==============================================================================
--- hadoop/pig/trunk/CHANGES.txt (original)
+++ hadoop/pig/trunk/CHANGES.txt Mon Jul 13 23:36:40 2009
@@ -40,6 +40,9 @@
 
 BUG FIXES
 
+    PIG-877: Push up filter does not account for added columns in foreach
+    (sms)
+
     PIG-883: udf import list does not send to the backend (daijy)
 
     PIG-881: Pig should ship load udfs to the backend (daijy)

Modified: 
hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/optimizer/PushUpFilter.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/optimizer/PushUpFilter.java?rev=793750&r1=793749&r2=793750&view=diff
==============================================================================
--- 
hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/optimizer/PushUpFilter.java
 (original)
+++ 
hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/optimizer/PushUpFilter.java
 Mon Jul 13 23:36:40 2009
@@ -402,6 +402,10 @@
         for (Integer input : predInputs) {
             List<ProjectionMap.Column> inputList = 
(List<ProjectionMap.Column>) mappedFields
                     .get(input);
+            // inputList is null -> the required field is added
+            if(inputList == null) {
+                return new Pair<Boolean, Set<Integer>>(false, null);
+            }
             for (ProjectionMap.Column column : inputList) {
                 // TODO
                 // Check if the column has a cast

Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestPushUpFilter.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestPushUpFilter.java?rev=793750&r1=793749&r2=793750&view=diff
==============================================================================
--- hadoop/pig/trunk/test/org/apache/pig/test/TestPushUpFilter.java (original)
+++ hadoop/pig/trunk/test/org/apache/pig/test/TestPushUpFilter.java Mon Jul 13 
23:36:40 2009
@@ -276,6 +276,24 @@
         assertEquals(filter, lp.getPredecessors(foreach).get(0));
         
     }
+    
+    @Test
+    public void testFilterForeachAddedField() throws Exception {
+        planTester.buildPlan("A = load 'myfile' as (name, age, gpa);");
+        planTester.buildPlan("B = foreach A generate $1, $2, COUNT({(1)});");  
      
+        LogicalPlan lp = planTester.buildPlan("C = filter B by $2 < 18;");
+        
+        planTester.setPlan(lp);
+        planTester.setProjectionMap(lp);
+        
+        PushUpFilter pushUpFilter = new PushUpFilter(lp);
+        
+        assertTrue(!pushUpFilter.check(lp.getLeaves()));
+        assertTrue(pushUpFilter.getSwap() == false);
+        assertTrue(pushUpFilter.getPushBefore() == false);
+        assertTrue(pushUpFilter.getPushBeforeInput() == -1);
+        
+    }
 
     @Test
     public void testFilterForeachCast() throws Exception {


Reply via email to