Author: daijy Date: Thu Oct 15 02:17:40 2009 New Revision: 825375 URL: http://svn.apache.org/viewvc?rev=825375&view=rev Log: PIG-921: Strange use case for Join which produces different results in local and map reduce mode
Modified: hadoop/pig/trunk/CHANGES.txt hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POLocalRearrange.java hadoop/pig/trunk/test/org/apache/pig/test/TestJoin.java Modified: hadoop/pig/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/CHANGES.txt?rev=825375&r1=825374&r2=825375&view=diff ============================================================================== --- hadoop/pig/trunk/CHANGES.txt (original) +++ hadoop/pig/trunk/CHANGES.txt Thu Oct 15 02:17:40 2009 @@ -73,6 +73,8 @@ PIG-1000: InternalCachedBag.java generates javac warning and findbug warning (yinghe via daijy) +PIG-921: Strange use case for Join which produces different results in local and map reduce mode (daijy) + Release 0.5.0 - Unreleased INCOMPATIBLE CHANGES Modified: hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POLocalRearrange.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POLocalRearrange.java?rev=825375&r1=825374&r2=825375&view=diff ============================================================================== --- hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POLocalRearrange.java (original) +++ hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POLocalRearrange.java Thu Oct 15 02:17:40 2009 @@ -440,7 +440,9 @@ } } else { try { - mProjectedColsMap.put(project.getColumn(), keyIndex); + List<PhysicalOperator> preds = plan.getPredecessors(leaf); + if (!(preds.get(0) instanceof POProject)) + mProjectedColsMap.put(project.getColumn(), keyIndex); } catch (ExecException e) { int errCode = 2070; String msg = "Problem in accessing column from project operator."; Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestJoin.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestJoin.java?rev=825375&r1=825374&r2=825375&view=diff ============================================================================== --- hadoop/pig/trunk/test/org/apache/pig/test/TestJoin.java (original) +++ hadoop/pig/trunk/test/org/apache/pig/test/TestJoin.java Thu Oct 15 02:17:40 2009 @@ -474,5 +474,40 @@ } } + + @Test + public void testJoinTupleFieldKey() throws Exception{ + for (ExecType execType : execTypes) { + setUp(execType); + String[] input1 = { + "(1,a)", + "(2,aa)" + }; + String[] input2 = { + "(1,b)", + "(2,bb)" + }; + + String firstInput = createInputFile(execType, "a.txt", input1); + String secondInput = createInputFile(execType, "b.txt", input2); + + String script = "a = load '"+ firstInput +"' as (a:tuple(a1:int, a2:chararray));" + + "b = load '"+ secondInput +"' as (b:tuple(b1:int, b2:chararray));" + + "c = join a by a.a1, b by b.b1;"; + Util.registerMultiLineQuery(pigServer, script); + Iterator<Tuple> it = pigServer.openIterator("c"); + + assertTrue(it.hasNext()); + Tuple t = it.next(); + assertTrue(t.toString().equals("((1,a),(1,b))")); + + assertTrue(it.hasNext()); + t = it.next(); + assertTrue(t.toString().equals("((2,aa),(2,bb))")); + + deleteInputFile(execType, firstInput); + deleteInputFile(execType, secondInput); + } + } }