Author: daijy
Date: Thu Dec 10 17:50:47 2009
New Revision: 889347

URL: http://svn.apache.org/viewvc?rev=889347&view=rev
Log:
PIG-1142: Got NullPointerException merge join with pruning

Modified:
    hadoop/pig/branches/branch-0.6/CHANGES.txt
    
hadoop/pig/branches/branch-0.6/src/org/apache/pig/impl/logicalLayer/LOJoin.java
    hadoop/pig/branches/branch-0.6/test/org/apache/pig/test/TestPruneColumn.java

Modified: hadoop/pig/branches/branch-0.6/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/pig/branches/branch-0.6/CHANGES.txt?rev=889347&r1=889346&r2=889347&view=diff
==============================================================================
--- hadoop/pig/branches/branch-0.6/CHANGES.txt (original)
+++ hadoop/pig/branches/branch-0.6/CHANGES.txt Thu Dec 10 17:50:47 2009
@@ -235,6 +235,8 @@
 
 PIG-1132: Column Pruner issues in dealing with unprunable loader (daijy)
 
+PIG-1142: Got NullPointerException merge join with pruning (daijy)
+
 Release 0.5.0
 
 INCOMPATIBLE CHANGES

Modified: 
hadoop/pig/branches/branch-0.6/src/org/apache/pig/impl/logicalLayer/LOJoin.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/branches/branch-0.6/src/org/apache/pig/impl/logicalLayer/LOJoin.java?rev=889347&r1=889346&r2=889347&view=diff
==============================================================================
--- 
hadoop/pig/branches/branch-0.6/src/org/apache/pig/impl/logicalLayer/LOJoin.java 
(original)
+++ 
hadoop/pig/branches/branch-0.6/src/org/apache/pig/impl/logicalLayer/LOJoin.java 
Thu Dec 10 17:50:47 2009
@@ -611,7 +611,8 @@
                     errCode, PigException.BUG);
         }
 
-        for (Pair<Integer, Integer> column : columns) {
+        for (int i=columns.size()-1;i>=0;i--) {
+            Pair<Integer, Integer> column = columns.get(i);
             if (column.first < 0 || column.first > predecessors.size()) {
                 int errCode = 2191;
                 throw new FrontendException("No input " + column.first

Modified: 
hadoop/pig/branches/branch-0.6/test/org/apache/pig/test/TestPruneColumn.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/branches/branch-0.6/test/org/apache/pig/test/TestPruneColumn.java?rev=889347&r1=889346&r2=889347&view=diff
==============================================================================
--- 
hadoop/pig/branches/branch-0.6/test/org/apache/pig/test/TestPruneColumn.java 
(original)
+++ 
hadoop/pig/branches/branch-0.6/test/org/apache/pig/test/TestPruneColumn.java 
Thu Dec 10 17:50:47 2009
@@ -1535,5 +1535,32 @@
         
         assertTrue(checkLogFileMessage(new String[]{"Columns pruned for A: $0, 
$2", 
                 "No map keys pruned for A"}));
-     } 
+    }
+    
+    // See PIG-1142
+    @Test
+    public void testJoin4() throws Exception {
+        pigServer.registerQuery("A = load '"+ 
Util.generateURI(tmpFile1.toString()) + "' AS (a0, a1, a2);");
+        pigServer.registerQuery("B = load '"+ 
Util.generateURI(tmpFile1.toString()) + "' AS (b0, b1, b2);");
+        pigServer.registerQuery("C = join A by a2, B by b2;");
+        pigServer.registerQuery("D = foreach C generate $0,  $1,  $2;");
+        
+        Iterator<Tuple> iter = pigServer.openIterator("D");
+        Collection<String> results = new HashSet<String>();
+        results.add("(1,2,3)");
+        results.add("(2,5,2)");
+        
+        assertTrue(iter.hasNext());
+        Tuple t = iter.next();
+        assertTrue(results.contains(t.toString()));
+        
+        assertTrue(iter.hasNext());
+        t = iter.next();
+        assertTrue(results.contains(t.toString()));
+        
+        assertFalse(iter.hasNext());
+        
+        assertTrue(checkLogFileMessage(new String[]{"No column pruned for A", 
+                "No map keys pruned for A", "Columns pruned for B: $0, $1", 
"No map keys pruned for B"}));
+     }
 }


Reply via email to