You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by rd...@apache.org on 2011/03/07 21:06:31 UTC

svn commit: r1078915 - in /pig/trunk: CHANGES.txt src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/AccumulatorOptimizer.java test/org/apache/pig/test/TestAccumulator.java

Author: rding
Date: Mon Mar  7 20:06:30 2011
New Revision: 1078915

URL: http://svn.apache.org/viewvc?rev=1078915&view=rev
Log:
PIG-1837: Error while using IsEmpty function

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/AccumulatorOptimizer.java
    pig/trunk/test/org/apache/pig/test/TestAccumulator.java

Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1078915&r1=1078914&r2=1078915&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Mon Mar  7 20:06:30 2011
@@ -102,6 +102,8 @@ PIG-1696: Performance: Use System.arrayc
 
 BUG FIXES
 
+PIG-1837: Error while using IsEmpty function (rding)
+
 PIG-1884: Change ReadToEndLoader.setLocation not throw UnsupportedOperationException (thejas)
 
 PIG-1887: Fix pig-withouthadoop.jar to contains proper jars (daijy)

Modified: pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/AccumulatorOptimizer.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/AccumulatorOptimizer.java?rev=1078915&r1=1078914&r2=1078915&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/AccumulatorOptimizer.java (original)
+++ pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/AccumulatorOptimizer.java Mon Mar  7 20:06:30 2011
@@ -257,8 +257,8 @@ public class AccumulatorOptimizer extend
         }
         
         if (po instanceof POBinCond) {
-            return checkUDFInput(((POBinCond)po).getLhs()) ||
-            checkUDFInput(((POBinCond)po).getRhs()) || checkUDFInput(((POBinCond)po).getCond());
+            return checkUDFInput(((POBinCond)po).getLhs()) &&
+            checkUDFInput(((POBinCond)po).getRhs()) && checkUDFInput(((POBinCond)po).getCond());
         }
         
         if (po instanceof POSortedDistinct) {    		    		

Modified: pig/trunk/test/org/apache/pig/test/TestAccumulator.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestAccumulator.java?rev=1078915&r1=1078914&r2=1078915&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestAccumulator.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestAccumulator.java Mon Mar  7 20:06:30 2011
@@ -578,5 +578,40 @@ public class TestAccumulator extends Tes
         }                                   
     }        
     
+    @Test // PIG-1837
+    public void testBinCondCheck() throws Exception {
+        PrintWriter w = new PrintWriter(new FileWriter("data1"));
+        w.println("1\t11");                
+        w.println("2\t15");          
+        w.close();   
+        
+        Util.copyFromLocalToCluster(cluster, "data1", "data1");
+        
+        w = new PrintWriter(new FileWriter("data2"));
+        w.println("1\t10");     
+        w.println("4\t11");
+        w.println("5\t10");     
+        w.close();   
+        
+        Util.copyFromLocalToCluster(cluster, "data2", "data2");
+        
+        pigServer.registerQuery("A = load 'data1' as (x:int, y:int);");
+        pigServer.registerQuery("B = load 'data2' as (x:int, z:int);");
+        pigServer.registerQuery("C = cogroup A by x, B by x;");
+        pigServer.registerQuery("D = foreach C generate group, SUM((IsEmpty(A.y) ? {(0)} : A.y)) + SUM((IsEmpty(B.z) ? {(0)} : B.z));");
+
+        HashMap<Integer, Long> expected = new HashMap<Integer, Long>();
+        expected.put(1, 21l);
+        expected.put(2, 15l);
+        expected.put(4, 11l);  
+        expected.put(5, 10l);  
+                  
+        Iterator<Tuple> iter = pigServer.openIterator("D");
+        while(iter.hasNext()) {
+            Tuple t = iter.next();
+            assertEquals(expected.get((Integer)t.get(0)), (Long)t.get(1));                
+        }      
+    }
+    
 
 }