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


Reply via email to