Author: daijy Date: Thu Jul 9 20:18:51 2009 New Revision: 792663 URL: http://svn.apache.org/viewvc?rev=792663&view=rev Log: PIG-876: limit changes order of order-by to ascending
Modified: hadoop/pig/trunk/CHANGES.txt hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/MRCompiler.java hadoop/pig/trunk/test/org/apache/pig/test/TestEvalPipeline2.java Modified: hadoop/pig/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/CHANGES.txt?rev=792663&r1=792662&r2=792663&view=diff ============================================================================== --- hadoop/pig/trunk/CHANGES.txt (original) +++ hadoop/pig/trunk/CHANGES.txt Thu Jul 9 20:18:51 2009 @@ -40,6 +40,8 @@ BUG FIXES + PIG-876: limit changes order of order-by to ascending (daijy) + PIG-851: Map type used as return type in UDFs not recognized at all times (zjffdu via sms) Modified: hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/MRCompiler.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/MRCompiler.java?rev=792663&r1=792662&r2=792663&view=diff ============================================================================== --- hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/MRCompiler.java (original) +++ hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/MRCompiler.java Thu Jul 9 20:18:51 2009 @@ -1787,8 +1787,11 @@ // need to indicate that this is a limit after a sort. // This will assure that we get the right sort comparator // set. Otherwise our order gets wacked (PIG-461). - if (mr.isGlobalSort()) limitAdjustMROp.setLimitAfterSort(true); - + if (mr.isGlobalSort()) + { + limitAdjustMROp.setLimitAfterSort(true); + limitAdjustMROp.setSortOrder(mr.getSortOrder()); + } List<MapReduceOper> successorList = MRPlan.getSuccessors(mr); MapReduceOper successors[] = null; Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestEvalPipeline2.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestEvalPipeline2.java?rev=792663&r1=792662&r2=792663&view=diff ============================================================================== --- hadoop/pig/trunk/test/org/apache/pig/test/TestEvalPipeline2.java (original) +++ hadoop/pig/trunk/test/org/apache/pig/test/TestEvalPipeline2.java Thu Jul 9 20:18:51 2009 @@ -378,5 +378,36 @@ assertEquals(10, numIdentity); } + @Test + public void testLimitAfterSortDesc() throws Exception{ + int LOOP_COUNT = 40; + File tmpFile = File.createTempFile("test", "txt"); + PrintStream ps = new PrintStream(new FileOutputStream(tmpFile)); + Random r = new Random(1); + int rand; + for(int i = 0; i < LOOP_COUNT; i++) { + rand = r.nextInt(100); + ps.println(rand); + } + ps.close(); + + pigServer.registerQuery("A = LOAD '" + Util.generateURI(tmpFile.toString()) + "' AS (num:int);"); + pigServer.registerQuery("B = order A by num desc parallel 2;"); + pigServer.registerQuery("C = limit B 10;"); + Iterator<Tuple> iter = pigServer.openIterator("C"); + if(!iter.hasNext()) fail("No output found"); + int numIdentity = 0; + int oldNum = Integer.MAX_VALUE; + int newNum; + while(iter.hasNext()){ + Tuple t = iter.next(); + newNum = (Integer)t.get(0); + assertTrue(newNum<=oldNum); + oldNum = newNum; + ++numIdentity; + } + assertEquals(10, numIdentity); + } + }