You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by an...@apache.org on 2013/06/04 01:10:50 UTC
svn commit: r1489223 - in /pig/trunk: CHANGES.txt
src/org/apache/pig/builtin/TOP.java src/org/apache/pig/data/DataType.java
test/org/apache/pig/test/TestNull.java
Author: aniket486
Date: Mon Jun 3 23:10:50 2013
New Revision: 1489223
URL: http://svn.apache.org/r1489223
Log:
PIG-2828: Handle nulls in DataType.compare
Modified:
pig/trunk/CHANGES.txt
pig/trunk/src/org/apache/pig/builtin/TOP.java
pig/trunk/src/org/apache/pig/data/DataType.java
pig/trunk/test/org/apache/pig/test/TestNull.java
Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1489223&r1=1489222&r2=1489223&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Mon Jun 3 23:10:50 2013
@@ -192,6 +192,8 @@ PIG-3013: BinInterSedes improve chararra
BUG FIXES
+PIG-2828: Handle nulls in DataType.compare (aniket486)
+
PIG-3335: TestErrorHandling.tesNegative7 fails on MR2 (xuefuz)
PIG-3316: Pig failed to interpret DateTime values in some special cases (xuefuz)
Modified: pig/trunk/src/org/apache/pig/builtin/TOP.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/TOP.java?rev=1489223&r1=1489222&r2=1489223&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/TOP.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/TOP.java Mon Jun 3 23:10:50 2013
@@ -92,7 +92,9 @@ public class TOP extends EvalFunc<DataBa
Object field2 = o2.get(fieldNum);
if (!typeFound) {
datatype = DataType.findType(field1);
- typeFound = true;
+ if(datatype != DataType.NULL) {
+ typeFound = true;
+ }
}
return DataType.compare(field1, field2, datatype, datatype);
} catch (ExecException e) {
Modified: pig/trunk/src/org/apache/pig/data/DataType.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/data/DataType.java?rev=1489223&r1=1489222&r2=1489223&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/data/DataType.java (original)
+++ pig/trunk/src/org/apache/pig/data/DataType.java Mon Jun 3 23:10:50 2013
@@ -453,6 +453,17 @@ public class DataType {
@SuppressWarnings("unchecked")
public static int compare(Object o1, Object o2, byte dt1, byte dt2) {
if (dt1 == dt2) {
+ if(o1 == null) {
+ if(o2 == null) {
+ return 0;
+ } else {
+ return -1;
+ }
+ } else {
+ if(o2 == null) {
+ return 1;
+ }
+ }
switch (dt1) {
case NULL:
return 0;
Modified: pig/trunk/test/org/apache/pig/test/TestNull.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestNull.java?rev=1489223&r1=1489222&r2=1489223&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestNull.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestNull.java Mon Jun 3 23:10:50 2013
@@ -232,6 +232,21 @@ public class TestNull {
}
return true;
}
+
+ @Test
+ public void testCompare() {
+ Object o1 = new Object();
+ Object o2 = null;
+ assertTrue(DataType.compare(o1, o2, DataType.NULL, DataType.NULL) > 0);
+
+ o1 = null;
+ o2 = new Object();
+ assertTrue(DataType.compare(o1, o2, DataType.NULL, DataType.NULL) < 0);
+
+ o1 = null;
+ o2 = null;
+ assertTrue(DataType.compare(o1, o2, DataType.NULL, DataType.NULL) == 0);
+ }
@Test
public void testOperator() throws ExecException {