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);
+ }
+
}