Author: daijy Date: Thu Dec 10 17:49:18 2009 New Revision: 889346 URL: http://svn.apache.org/viewvc?rev=889346&view=rev Log: PIG-1142: Got NullPointerException merge join with pruning
Modified: hadoop/pig/trunk/CHANGES.txt hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/LOJoin.java hadoop/pig/trunk/test/org/apache/pig/test/TestPruneColumn.java Modified: hadoop/pig/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/CHANGES.txt?rev=889346&r1=889345&r2=889346&view=diff ============================================================================== --- hadoop/pig/trunk/CHANGES.txt (original) +++ hadoop/pig/trunk/CHANGES.txt Thu Dec 10 17:49:18 2009 @@ -269,6 +269,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/trunk/src/org/apache/pig/impl/logicalLayer/LOJoin.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/LOJoin.java?rev=889346&r1=889345&r2=889346&view=diff ============================================================================== --- hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/LOJoin.java (original) +++ hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/LOJoin.java Thu Dec 10 17:49:18 2009 @@ -617,7 +617,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/trunk/test/org/apache/pig/test/TestPruneColumn.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestPruneColumn.java?rev=889346&r1=889345&r2=889346&view=diff ============================================================================== --- hadoop/pig/trunk/test/org/apache/pig/test/TestPruneColumn.java (original) +++ hadoop/pig/trunk/test/org/apache/pig/test/TestPruneColumn.java Thu Dec 10 17:49:18 2009 @@ -1539,5 +1539,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"})); + } }