You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by gd...@apache.org on 2012/10/25 02:11:30 UTC

svn commit: r1401926 - in /pig/trunk: CHANGES.txt src/org/apache/pig/data/BinInterSedes.java src/org/apache/pig/data/DataByteArray.java test/org/apache/pig/test/TestDataModel.java

Author: gdfm
Date: Thu Oct 25 00:11:29 2012
New Revision: 1401926

URL: http://svn.apache.org/viewvc?rev=1401926&view=rev
Log:
PIG-2999: Regression after PIG-2975: BinInterSedesTupleRawComparator secondary sort failing (cheolsoo via azaroth)

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/src/org/apache/pig/data/BinInterSedes.java
    pig/trunk/src/org/apache/pig/data/DataByteArray.java
    pig/trunk/test/org/apache/pig/test/TestDataModel.java

Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1401926&r1=1401925&r2=1401926&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Thu Oct 25 00:11:29 2012
@@ -330,6 +330,8 @@ OPTIMIZATIONS
 
 BUG FIXES
 
+PIG-2999: Regression after PIG-2975: BinInterSedesTupleRawComparator secondary sort failing (cheolsoo via azaroth)
+
 PIG-2998: Fix TestScriptLanguage and TestMacroExpansion (cheolsoo via jcoveney)
 
 PIG-2975: TestTypedMap.testOrderBy failing with incorrect result (knoguchi via jcoveney)

Modified: pig/trunk/src/org/apache/pig/data/BinInterSedes.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/data/BinInterSedes.java?rev=1401926&r1=1401925&r2=1401926&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/data/BinInterSedes.java (original)
+++ pig/trunk/src/org/apache/pig/data/BinInterSedes.java Thu Oct 25 00:11:29 2012
@@ -862,9 +862,11 @@ public class BinInterSedes implements In
                 if (type1 == type2) {
                     int basz1 = readSize(bb1, dt1);
                     int basz2 = readSize(bb2, dt2);
-                    rc = org.apache.hadoop.io.WritableComparator.compareBytes(
+                    rc = WritableComparator.compareBytes(
                           bb1.array(), bb1.position(), basz1,
                           bb2.array(), bb2.position(), basz2);
+                    bb1.position(bb1.position() + basz1);
+                    bb2.position(bb2.position() + basz2);
                 }
                 break;
             }

Modified: pig/trunk/src/org/apache/pig/data/DataByteArray.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/data/DataByteArray.java?rev=1401926&r1=1401925&r2=1401926&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/data/DataByteArray.java (original)
+++ pig/trunk/src/org/apache/pig/data/DataByteArray.java Thu Oct 25 00:11:29 2012
@@ -21,6 +21,8 @@ import java.io.Serializable;
 import java.io.UnsupportedEncodingException;
 import java.util.Arrays;
 
+import org.apache.hadoop.io.WritableComparator;
+
 import org.apache.pig.classification.InterfaceAudience;
 import org.apache.pig.classification.InterfaceStability;
 
@@ -207,20 +209,8 @@ public class DataByteArray implements Co
     }
 
     public static int compare(byte[] b1, byte[] b2) {
-        int i;
-        for (i = 0; i < b1.length; i++) {
-            // If the other has run out of characters, we're bigger.
-            if (i >= b2.length)
-                return 1;
-            if (b1[i] < b2[i])
-                return -1;
-            else if (b1[i] > b2[i])
-                return 1;
-        }
-        // If the other still has characters left, it's greater
-        if (i < b2.length)
-            return -1;
-        return 0;
+        return WritableComparator.compareBytes(b1, 0, b1.length,
+                                               b2, 0, b2.length);
     }
 
     @Override

Modified: pig/trunk/test/org/apache/pig/test/TestDataModel.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestDataModel.java?rev=1401926&r1=1401925&r2=1401926&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestDataModel.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestDataModel.java Thu Oct 25 00:11:29 2012
@@ -337,19 +337,19 @@ public class TestDataModel extends junit
 
         t2 = tf.newTuple();
         t2.append(new Integer(2));
-        assertEquals("greater than tuple with lesser value", 1, t1.compareTo(t2));
+        assertTrue("greater than tuple with lesser value", 0 < t1.compareTo(t2));
 
         t2 = tf.newTuple();
         t2.append(new Integer(4));
-        assertEquals("less than tuple with greater value", -1, t1.compareTo(t2));
+        assertTrue("less than tuple with greater value", 0 > t1.compareTo(t2));
 
         t2 = tf.newTuple();
         t2.append(new Integer(3));
         t2.append(new Integer(4));
-        assertEquals("less than bigger tuple", -1, t1.compareTo(t2));
+        assertTrue("less than bigger tuple", 0 > t1.compareTo(t2));
 
         t2 = tf.newTuple();
-        assertEquals("greater than smaller tuple", 1, t1.compareTo(t2));
+        assertTrue("greater than smaller tuple", 0 < t1.compareTo(t2));
     }
 
     @Test
@@ -369,48 +369,48 @@ public class TestDataModel extends junit
         t2 = tf.newTuple();
         t2.append(new DataByteArray("aaa"));
         t2.append(new DataByteArray("aaa"));
-        assertEquals("greater than tuple with lesser value", 1, t1.compareTo(t2));
+        assertTrue("greater than tuple with lesser value", 0 < t1.compareTo(t2));
 
         t2 = tf.newTuple();
         t2.append(new DataByteArray("ddd"));
         t2.append(new DataByteArray("ddd"));
-        assertEquals("less than tuple with greater value", -1, t1.compareTo(t2));
+        assertTrue("less than tuple with greater value", 0 > t1.compareTo(t2));
 
         // First column same, second lesser
         t2 = tf.newTuple();
         t2.append(new DataByteArray("bbb"));
         t2.append(new DataByteArray("aaa"));
-        assertEquals("greater than tuple with lesser value", 1, t1.compareTo(t2));
+        assertTrue("greater than tuple with lesser value", 0 < t1.compareTo(t2));
 
         // First column same, second greater
         t2 = tf.newTuple();
         t2.append(new DataByteArray("bbb"));
         t2.append(new DataByteArray("ccc"));
-        assertEquals("greater than tuple with lesser value", -1, t1.compareTo(t2));
+        assertTrue("greater than tuple with lesser value", 0 > t1.compareTo(t2));
 
         // First column less, second same
         t2 = tf.newTuple();
         t2.append(new DataByteArray("aaa"));
         t2.append(new DataByteArray("bbb"));
-        assertEquals("greater than tuple with lesser value", 1, t1.compareTo(t2));
+        assertTrue("greater than tuple with lesser value", 0 < t1.compareTo(t2));
 
         // First column greater, second same
         t2 = tf.newTuple();
         t2.append(new DataByteArray("ccc"));
         t2.append(new DataByteArray("bbb"));
-        assertEquals("greater than tuple with lesser value", -1, t1.compareTo(t2));
+        assertTrue("greater than tuple with lesser value", 0 > t1.compareTo(t2));
 
         // First column less, second greater
         t2 = tf.newTuple();
         t2.append(new DataByteArray("aaa"));
         t2.append(new DataByteArray("ccc"));
-        assertEquals("greater than tuple with lesser value", 1, t1.compareTo(t2));
+        assertTrue("greater than tuple with lesser value", 0 < t1.compareTo(t2));
 
         // First column greater, second same
         t2 = tf.newTuple();
         t2.append(new DataByteArray("ccc"));
         t2.append(new DataByteArray("aaa"));
-        assertEquals("greater than tuple with lesser value", -1, t1.compareTo(t2));
+        assertTrue("greater than tuple with lesser value", 0 > t1.compareTo(t2));
     }
 
     @Test