Author: daijy
Date: Mon May 17 17:24:40 2010
New Revision: 945254

URL: http://svn.apache.org/viewvc?rev=945254&view=rev
Log:
PIG-566: Dump and store outputs do not match for PigStorage (azaroth via daijy)

Modified:
    hadoop/pig/trunk/CHANGES.txt
    hadoop/pig/trunk/src/org/apache/pig/builtin/Utf8StorageConverter.java
    hadoop/pig/trunk/src/org/apache/pig/impl/util/TupleFormat.java
    hadoop/pig/trunk/test/org/apache/pig/test/TestCombiner.java
    hadoop/pig/trunk/test/org/apache/pig/test/TestConversions.java
    hadoop/pig/trunk/test/org/apache/pig/test/TestDataModel.java
    hadoop/pig/trunk/test/org/apache/pig/test/TestSecondarySort.java
    hadoop/pig/trunk/test/org/apache/pig/test/TestTextDataParser.java
    hadoop/pig/trunk/test/org/apache/pig/test/TestTupleFormat.java

Modified: hadoop/pig/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/CHANGES.txt?rev=945254&r1=945253&r2=945254&view=diff
==============================================================================
--- hadoop/pig/trunk/CHANGES.txt (original)
+++ hadoop/pig/trunk/CHANGES.txt Mon May 17 17:24:40 2010
@@ -64,6 +64,8 @@ PIG-1309: Map-side Cogroup (ashutoshc)
 
 BUG FIXES
 
+PIG-566: Dump and store outputs do not match for PigStorage (azaroth via daijy)
+
 PIG-1414: Problem with parameter substitution (rding)
 
 PIG-1407: Logging starts before being configured (azaroth via daijy)

Modified: hadoop/pig/trunk/src/org/apache/pig/builtin/Utf8StorageConverter.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/builtin/Utf8StorageConverter.java?rev=945254&r1=945253&r2=945254&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/builtin/Utf8StorageConverter.java 
(original)
+++ hadoop/pig/trunk/src/org/apache/pig/builtin/Utf8StorageConverter.java Mon 
May 17 17:24:40 2010
@@ -52,8 +52,10 @@ public class Utf8StorageConverter implem
     protected TupleFactory mTupleFactory = TupleFactory.getInstance();
     protected final Log mLog = LogFactory.getLog(getClass());
 
-    private Integer mMaxInt = Integer.valueOf(Integer.MAX_VALUE);
-    private Long mMaxLong = Long.valueOf(Long.MAX_VALUE);
+    private static final Integer mMaxInt = Integer.valueOf(Integer.MAX_VALUE);
+    private static final Integer mMinInt = Integer.valueOf(Integer.MIN_VALUE);
+    private static final Long mMaxLong = Long.valueOf(Long.MAX_VALUE);
+    private static final Long mMinLong = Long.valueOf(Long.MIN_VALUE);
     private static final int BUFFER_SIZE = 1024;
         
     public Utf8StorageConverter() {
@@ -328,14 +330,12 @@ public class Utf8StorageConverter implem
         if(b == null)
             return null;
         String s;
-        if(b.length > 0 && 
-           (b[b.length - 1] == 'F' || b[b.length - 1] == 'f') ){
+        if (b.length > 0 && (b[b.length - 1] == 'F' || b[b.length - 1] == 
'f')) {
             s = new String(b, 0, b.length - 1);
-        } 
-        else {
+        } else {
             s = new String(b);
         }
-        
+
         try {
             return Float.valueOf(s);
         } catch (NumberFormatException nfe) {
@@ -368,9 +368,10 @@ public class Utf8StorageConverter implem
             try {
                 Double d = Double.valueOf(s);
                 // Need to check for an overflow error
-                if (d.doubleValue() > mMaxInt.doubleValue() + 1.0) {
+                if (Double.compare(d.doubleValue(), mMaxInt.doubleValue() + 1) 
>= 0 ||
+                        Double.compare(d.doubleValue(), mMinInt.doubleValue() 
- 1) <= 0) {
                     LogUtils.warn(this, "Value " + d + " too large for 
integer", 
-                                PigWarning.TOO_LARGE_FOR_INT, mLog);
+                            PigWarning.TOO_LARGE_FOR_INT, mLog);
                     return null;
                 }
                 return Integer.valueOf(d.intValue());
@@ -385,18 +386,15 @@ public class Utf8StorageConverter implem
     }
 
     public Long bytesToLong(byte[] b) throws IOException {
-        if(b == null)
+        if (b == null)
             return null;
-
         String s;
-        if(b.length > 0  &&  
-           (b[b.length - 1] == 'L' || b[b.length - 1] == 'l') ){
+        if (b.length > 0 && (b[b.length - 1] == 'L' || b[b.length - 1] == 
'l')) {
             s = new String(b, 0, b.length - 1);
-        } 
-        else {
+        } else {
             s = new String(b);
         }
-
+        
         try {
             return Long.valueOf(s);
         } catch (NumberFormatException nfe) {
@@ -407,8 +405,9 @@ public class Utf8StorageConverter implem
             try {
                 Double d = Double.valueOf(s);
                 // Need to check for an overflow error
-                if (d.doubleValue() > mMaxLong.doubleValue() + 1.0) {
-                       LogUtils.warn(this, "Value " + d + " too large for 
integer", 
+                if (Double.compare(d.doubleValue(), mMaxLong.doubleValue() + 
1) > 0 ||
+                        Double.compare(d.doubleValue(), mMinLong.doubleValue() 
- 1) < 0) {
+                       LogUtils.warn(this, "Value " + d + " too large for 
long", 
                                    PigWarning.TOO_LARGE_FOR_INT, mLog);
                     return null;
                 }

Modified: hadoop/pig/trunk/src/org/apache/pig/impl/util/TupleFormat.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/impl/util/TupleFormat.java?rev=945254&r1=945253&r2=945254&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/impl/util/TupleFormat.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/impl/util/TupleFormat.java Mon May 17 
17:24:40 2010
@@ -62,11 +62,6 @@ public class TupleFormat {
                     }
                     else {
                         sb.append(d.toString());
-                        if (d instanceof Long) {
-                            sb.append("L");
-                        } else if (d instanceof Float) {
-                            sb.append("F");
-                        }
                     }
                 } else {
                     sb.append("");

Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestCombiner.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestCombiner.java?rev=945254&r1=945253&r2=945254&view=diff
==============================================================================
--- hadoop/pig/trunk/test/org/apache/pig/test/TestCombiner.java (original)
+++ hadoop/pig/trunk/test/org/apache/pig/test/TestCombiner.java Mon May 17 
17:24:40 2010
@@ -127,9 +127,9 @@ public class TestCombiner extends TestCa
         pig.registerQuery("C = foreach B generate flatten(group), COUNT($1);");
         Iterator<Tuple> resultIterator = pig.openIterator("C");
         Tuple tuple = resultIterator.next();
-        assertEquals("(a,b,2L)", tuple.toString());
+        assertEquals("(a,b,2)", tuple.toString());
         tuple = resultIterator.next();
-        assertEquals("(a,c,1L)", tuple.toString());
+        assertEquals("(a,c,1)", tuple.toString());
         
         return inputFileName;
     }
@@ -364,9 +364,9 @@ public class TestCombiner extends TestCa
                 "pig1\t20\t3.1" };
         
         String expected[] = {
-                
"(pig1,75L,{(pig1,18,2.1),(pig1,18,2.1),(pig1,19,2.1),(pig1,20,3.1)})",
-                "(pig2,48L,{(pig2,24,3.3),(pig2,24,4.5)})",
-                "(pig5,45L,{(pig5,45,2.4)})"
+                
"(pig1,75,{(pig1,18,2.1),(pig1,18,2.1),(pig1,19,2.1),(pig1,20,3.1)})",
+                "(pig2,48,{(pig2,24,3.3),(pig2,24,4.5)})",
+                "(pig5,45,{(pig5,45,2.4)})"
         };
 
         try {

Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestConversions.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestConversions.java?rev=945254&r1=945253&r2=945254&view=diff
==============================================================================
--- hadoop/pig/trunk/test/org/apache/pig/test/TestConversions.java (original)
+++ hadoop/pig/trunk/test/org/apache/pig/test/TestConversions.java Mon May 17 
17:24:40 2010
@@ -40,7 +40,6 @@ import org.apache.pig.impl.util.Utils;
 import org.junit.Test;
 
 import junit.framework.TestCase;
-import junit.framework.AssertionFailedError;
 
 /**
  * Test class to test conversions from bytes to types
@@ -80,7 +79,7 @@ public class TestConversions extends Tes
     {
         // valid floats
         String[] a = {"1", "-2.345",  "12.12334567", "1.02e-2",".23344",
-                     "23.1234567897", "12312.33f", "002312.33F", "1.02e-2f", 
""};
+                     "23.1234567897", "12312.33", "002312.33", "1.02e-2", ""};
 
         Float[] f = {1f, -2.345f,  12.12334567f, 1.02e-2f,.23344f, 
23.1234567f, // 23.1234567f is a truncation case
                     12312.33f, 2312.33f, 1.02e-2f }; 
@@ -126,7 +125,7 @@ public class TestConversions extends Tes
     {
         // valid Longs
         String[] a = {"1", "-2345",  "123456789012345678", "1.1", "-23.45",
-                     "21345345l", "3422342L", ""};
+                     "21345345", "3422342", ""};
         Long[] la = {1L, -2345L, 123456789012345678L, 1L, -23L, 
                     21345345L, 3422342L};
         
@@ -304,6 +303,7 @@ public class TestConversions extends Tes
         }
     }
     
+    @Test
     public void testBytesToComplexTypeMisc() throws IOException, 
ParseException {
         String s = "(a,b";
         Schema schema = Utils.getSchemaFromString("t:tuple(a:chararray, 
b:chararray)");
@@ -370,4 +370,48 @@ public class TestConversions extends Tes
         t = ps.getLoadCaster().bytesToTuple(s.getBytes(), rfs);
         assertTrue(t==null);
     }
+    
+    @Test
+    public void testOverflow() throws IOException, ParseException {
+       Schema schema;
+       ResourceFieldSchema rfs;
+       Tuple tuple, convertedTuple;
+        tuple = TupleFactory.getInstance().newTuple(1);
+       
+        schema = Utils.getSchemaFromString("t:tuple(a:int)");
+        rfs = new ResourceSchema(schema).getFields()[0];
+
+        // long bigger than Integer.MAX_VALUE
+       tuple.set(0, Integer.valueOf(Integer.MAX_VALUE).longValue() + 1);
+       convertedTuple = 
ps.getLoadCaster().bytesToTuple(tuple.toString().getBytes(), rfs);
+        assertNull("Invalid cast to int: " + tuple.get(0) + " -> " + 
convertedTuple.get(0), convertedTuple.get(0));
+        
+        // long smaller than Integer.MIN_VALUE
+       tuple.set(0, Integer.valueOf(Integer.MIN_VALUE).longValue() - 1);
+       convertedTuple = 
ps.getLoadCaster().bytesToTuple(tuple.toString().getBytes(), rfs);
+        assertNull("Invalid cast to int: " + tuple.get(0) + " -> " + 
convertedTuple.get(0), convertedTuple.get(0));
+        
+        // double bigger than Integer.MAX_VALUE
+        tuple.set(0, Integer.valueOf(Integer.MAX_VALUE).doubleValue() + 1);
+        convertedTuple = 
ps.getLoadCaster().bytesToTuple(tuple.toString().getBytes(), rfs);
+        assertNull("Invalid cast to int: " + tuple.get(0) + " -> " + 
convertedTuple.get(0), convertedTuple.get(0));
+        
+        // double smaller than Integer.MIN_VALUE
+        tuple.set(0, Integer.valueOf(Integer.MIN_VALUE).doubleValue() - 1);
+        convertedTuple = 
ps.getLoadCaster().bytesToTuple(tuple.toString().getBytes(), rfs);
+        assertNull("Invalid cast to int: " + tuple.get(0) + " -> " + 
convertedTuple.get(0), convertedTuple.get(0));
+ 
+        schema = Utils.getSchemaFromString("t:tuple(a:long)");
+        rfs = new ResourceSchema(schema).getFields()[0];
+        
+        // double bigger than Long.MAX_VALUE
+        tuple.set(0, Long.valueOf(Long.MAX_VALUE).doubleValue() + 10000);
+        convertedTuple = 
ps.getLoadCaster().bytesToTuple(tuple.toString().getBytes(), rfs);
+        assertNull("Invalid cast to long: " + tuple.get(0) + " -> " + 
convertedTuple.get(0), convertedTuple.get(0));
+        
+        // double smaller than Long.MIN_VALUE
+        tuple.set(0, Long.valueOf(Long.MIN_VALUE).doubleValue() - 10000);
+        convertedTuple = 
ps.getLoadCaster().bytesToTuple(tuple.toString().getBytes(), rfs);
+        assertNull("Invalid cast to long: " + tuple.get(0) + " -> " + 
convertedTuple.get(0), convertedTuple.get(0));
+    }
 }

Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestDataModel.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestDataModel.java?rev=945254&r1=945253&r2=945254&view=diff
==============================================================================
--- hadoop/pig/trunk/test/org/apache/pig/test/TestDataModel.java (original)
+++ hadoop/pig/trunk/test/org/apache/pig/test/TestDataModel.java Mon May 17 
17:24:40 2010
@@ -266,7 +266,7 @@ public class TestDataModel extends junit
     public void testTupleToString() throws Exception {
         Tuple t = giveMeOneOfEach();
 
-        assertEquals("toString", "((3,3.0F),{(4),(mary had a little 
lamb)},[hello#world,goodbye#all],42,5000000000L,3.1415927F,2.99792458E8,true,hello,goodbye,)",
 t.toString());
+        assertEquals("toString", "((3,3.0),{(4),(mary had a little 
lamb)},[hello#world,goodbye#all],42,5000000000,3.1415927,2.99792458E8,true,hello,goodbye,)",
 t.toString());
     }
 
     @Test

Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestSecondarySort.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestSecondarySort.java?rev=945254&r1=945253&r2=945254&view=diff
==============================================================================
--- hadoop/pig/trunk/test/org/apache/pig/test/TestSecondarySort.java (original)
+++ hadoop/pig/trunk/test/org/apache/pig/test/TestSecondarySort.java Mon May 17 
17:24:40 2010
@@ -441,9 +441,9 @@ public class TestSecondarySort extends T
         pigServer.registerQuery("D = foreach C { E = limit A 10; F = E.a1; G = 
DISTINCT F; generate group, COUNT(G);};");
         Iterator<Tuple> iter = pigServer.openIterator("D");
         assertTrue(iter.hasNext());
-        assertTrue(iter.next().toString().equals("(1,2L)"));
+        assertTrue(iter.next().toString().equals("(1,2)"));
         assertTrue(iter.hasNext());
-        assertTrue(iter.next().toString().equals("(2,1L)"));
+        assertTrue(iter.next().toString().equals("(2,1)"));
         assertFalse(iter.hasNext());
         Util.deleteFile(cluster, tmpFile1.getCanonicalPath());
         Util.deleteFile(cluster, tmpFile2.getCanonicalPath());

Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestTextDataParser.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestTextDataParser.java?rev=945254&r1=945253&r2=945254&view=diff
==============================================================================
--- hadoop/pig/trunk/test/org/apache/pig/test/TestTextDataParser.java (original)
+++ hadoop/pig/trunk/test/org/apache/pig/test/TestTextDataParser.java Mon May 
17 17:24:40 2010
@@ -86,14 +86,14 @@ public class TestTextDataParser extends 
 
     @Test
     public void testLong() throws Exception{
-        String myLong = "1l";
+        String myLong = "1";
         Long l = ps.getLoadCaster().bytesToLong(myLong.getBytes());
         assertTrue(l.equals(1l));
     }
     
     @Test
     public void testFloat() throws Exception{
-        String myFloat = "0.1f";
+        String myFloat = "0.1";
         Float f = ps.getLoadCaster().bytesToFloat(myFloat.getBytes());
         assertTrue(f.equals(0.1f));
     }

Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestTupleFormat.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestTupleFormat.java?rev=945254&r1=945253&r2=945254&view=diff
==============================================================================
--- hadoop/pig/trunk/test/org/apache/pig/test/TestTupleFormat.java (original)
+++ hadoop/pig/trunk/test/org/apache/pig/test/TestTupleFormat.java Mon May 17 
17:24:40 2010
@@ -52,7 +52,7 @@ public class TestTupleFormat extends Tes
             tuple.set(6, bag);
 
             assertEquals(
-                    
"(12,[pig#scalability],,12L,1.2F,(innerTuple),{(innerTuple)})",
+                    
"(12,[pig#scalability],,12,1.2,(innerTuple),{(innerTuple)})",
                     TupleFormat.format(tuple));
         } catch (ExecException e) {
             e.printStackTrace();


Reply via email to