You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by ro...@apache.org on 2013/06/04 15:28:16 UTC

svn commit: r1489439 - in /pig/trunk: ./ src/org/apache/pig/builtin/ test/org/apache/pig/test/

Author: rohini
Date: Tue Jun  4 13:28:15 2013
New Revision: 1489439

URL: http://svn.apache.org/r1489439
Log:
PIG-3345: Handle null in DateTime functions (rohini)

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/src/org/apache/pig/builtin/GetDay.java
    pig/trunk/src/org/apache/pig/builtin/GetHour.java
    pig/trunk/src/org/apache/pig/builtin/GetMilliSecond.java
    pig/trunk/src/org/apache/pig/builtin/GetMinute.java
    pig/trunk/src/org/apache/pig/builtin/GetMonth.java
    pig/trunk/src/org/apache/pig/builtin/GetSecond.java
    pig/trunk/src/org/apache/pig/builtin/GetWeek.java
    pig/trunk/src/org/apache/pig/builtin/GetWeekYear.java
    pig/trunk/src/org/apache/pig/builtin/GetYear.java
    pig/trunk/src/org/apache/pig/builtin/ToDate.java
    pig/trunk/src/org/apache/pig/builtin/ToDate2ARGS.java
    pig/trunk/src/org/apache/pig/builtin/ToDate3ARGS.java
    pig/trunk/src/org/apache/pig/builtin/ToDateISO.java
    pig/trunk/src/org/apache/pig/builtin/ToMilliSeconds.java
    pig/trunk/src/org/apache/pig/builtin/ToString.java
    pig/trunk/src/org/apache/pig/builtin/ToUnixTime.java
    pig/trunk/test/org/apache/pig/test/TestBuiltin.java

Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1489439&r1=1489438&r2=1489439&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Tue Jun  4 13:28:15 2013
@@ -192,6 +192,8 @@ PIG-3013: BinInterSedes improve chararra
 
 BUG FIXES
 
+PIG-3345: Handle null in DateTime functions (rohini)
+
 PIG-3322: AvroStorage give NPE on reading file with union as top level schema (viraj via rohini)
 
 PIG-2828: Handle nulls in DataType.compare (aniket486)

Modified: pig/trunk/src/org/apache/pig/builtin/GetDay.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/GetDay.java?rev=1489439&r1=1489438&r2=1489439&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/GetDay.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/GetDay.java Tue Jun  4 13:28:15 2013
@@ -74,7 +74,7 @@ public class GetDay extends EvalFunc<Int
     
     @Override
     public Integer exec(Tuple input) throws IOException {
-        if (input == null || input.size() < 1) {
+        if (input == null || input.size() < 1 || input.get(0) == null) {
             return null;
         }
         

Modified: pig/trunk/src/org/apache/pig/builtin/GetHour.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/GetHour.java?rev=1489439&r1=1489438&r2=1489439&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/GetHour.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/GetHour.java Tue Jun  4 13:28:15 2013
@@ -74,7 +74,7 @@ public class GetHour extends EvalFunc<In
 
     @Override
     public Integer exec(Tuple input) throws IOException {
-        if (input == null || input.size() < 1) {
+        if (input == null || input.size() < 1 || input.get(0) == null) {
             return null;
         }        
 

Modified: pig/trunk/src/org/apache/pig/builtin/GetMilliSecond.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/GetMilliSecond.java?rev=1489439&r1=1489438&r2=1489439&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/GetMilliSecond.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/GetMilliSecond.java Tue Jun  4 13:28:15 2013
@@ -74,7 +74,7 @@ public class GetMilliSecond extends Eval
 
     @Override
     public Integer exec(Tuple input) throws IOException {
-        if (input == null || input.size() < 1) {
+        if (input == null || input.size() < 1 || input.get(0) == null) {
             return null;
         }
 

Modified: pig/trunk/src/org/apache/pig/builtin/GetMinute.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/GetMinute.java?rev=1489439&r1=1489438&r2=1489439&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/GetMinute.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/GetMinute.java Tue Jun  4 13:28:15 2013
@@ -74,7 +74,7 @@ public class GetMinute extends EvalFunc<
 
     @Override
     public Integer exec(Tuple input) throws IOException {
-        if (input == null || input.size() < 1) {
+        if (input == null || input.size() < 1 || input.get(0) == null) {
             return null;
         }
 

Modified: pig/trunk/src/org/apache/pig/builtin/GetMonth.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/GetMonth.java?rev=1489439&r1=1489438&r2=1489439&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/GetMonth.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/GetMonth.java Tue Jun  4 13:28:15 2013
@@ -74,7 +74,7 @@ public class GetMonth extends EvalFunc<I
 
     @Override
     public Integer exec(Tuple input) throws IOException {
-        if (input == null || input.size() < 1) {
+        if (input == null || input.size() < 1 || input.get(0) == null) {
             return null;
         }
 

Modified: pig/trunk/src/org/apache/pig/builtin/GetSecond.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/GetSecond.java?rev=1489439&r1=1489438&r2=1489439&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/GetSecond.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/GetSecond.java Tue Jun  4 13:28:15 2013
@@ -74,7 +74,7 @@ public class GetSecond extends EvalFunc<
 
     @Override
     public Integer exec(Tuple input) throws IOException {
-        if (input == null || input.size() < 1) {
+        if (input == null || input.size() < 1 || input.get(0) == null) {
             return null;
         }
 

Modified: pig/trunk/src/org/apache/pig/builtin/GetWeek.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/GetWeek.java?rev=1489439&r1=1489438&r2=1489439&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/GetWeek.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/GetWeek.java Tue Jun  4 13:28:15 2013
@@ -74,7 +74,7 @@ public class GetWeek extends EvalFunc<In
 
     @Override
     public Integer exec(Tuple input) throws IOException {
-        if (input == null || input.size() < 1) {
+        if (input == null || input.size() < 1 || input.get(0) == null) {
             return null;
         }
 

Modified: pig/trunk/src/org/apache/pig/builtin/GetWeekYear.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/GetWeekYear.java?rev=1489439&r1=1489438&r2=1489439&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/GetWeekYear.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/GetWeekYear.java Tue Jun  4 13:28:15 2013
@@ -74,7 +74,7 @@ public class GetWeekYear extends EvalFun
 
     @Override
     public Integer exec(Tuple input) throws IOException {
-        if (input == null || input.size() < 1) {
+        if (input == null || input.size() < 1 || input.get(0) == null) {
             return null;
         }
 

Modified: pig/trunk/src/org/apache/pig/builtin/GetYear.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/GetYear.java?rev=1489439&r1=1489438&r2=1489439&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/GetYear.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/GetYear.java Tue Jun  4 13:28:15 2013
@@ -74,7 +74,7 @@ public class GetYear extends EvalFunc<In
 
     @Override
     public Integer exec(Tuple input) throws IOException {
-        if (input == null || input.size() < 1) {
+        if (input == null || input.size() < 1 || input.get(0) == null) {
             return null;
         }
 

Modified: pig/trunk/src/org/apache/pig/builtin/ToDate.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/ToDate.java?rev=1489439&r1=1489438&r2=1489439&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/ToDate.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/ToDate.java Tue Jun  4 13:28:15 2013
@@ -82,6 +82,9 @@ public class ToDate extends EvalFunc<Dat
     private static final Pattern TIMEZONE_PATTERN = Pattern.compile("(Z|(?<=(T[0-9\\.:]{0,12}))((\\+|-)\\d{2}(:?\\d{2})?))$");
 
     public DateTime exec(Tuple input) throws IOException {
+        if (input == null || input.size() < 1 || input.get(0) == null) {
+            return null;
+        }
         return new DateTime(DataType.toLong(input.get(0)));
     }
 

Modified: pig/trunk/src/org/apache/pig/builtin/ToDate2ARGS.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/ToDate2ARGS.java?rev=1489439&r1=1489438&r2=1489439&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/ToDate2ARGS.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/ToDate2ARGS.java Tue Jun  4 13:28:15 2013
@@ -33,6 +33,9 @@ import org.joda.time.format.DateTimeForm
 public class ToDate2ARGS extends EvalFunc<DateTime> {
 
     public DateTime exec(Tuple input) throws IOException {
+        if (input == null || input.size() < 1 || input.get(0) == null) {
+            return null;
+        }
         String dtStr = DataType.toString(input.get(0));
         //DateTimeZone dtz = extractDateTimeZone(dtStr);
         //The timezone in the customized format is not predictable

Modified: pig/trunk/src/org/apache/pig/builtin/ToDate3ARGS.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/ToDate3ARGS.java?rev=1489439&r1=1489438&r2=1489439&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/ToDate3ARGS.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/ToDate3ARGS.java Tue Jun  4 13:28:15 2013
@@ -34,6 +34,9 @@ import org.joda.time.format.DateTimeForm
 public class ToDate3ARGS extends EvalFunc<DateTime> {
 
     public DateTime exec(Tuple input) throws IOException {
+        if (input == null || input.size() < 1 || input.get(0) == null) {
+            return null;
+        }
         DateTimeFormatter dtf = DateTimeFormat.forPattern(DataType
                 .toString(input.get(1)));
         DateTimeZone dtz = DateTimeZone.forOffsetMillis(DateTimeZone.forID(

Modified: pig/trunk/src/org/apache/pig/builtin/ToDateISO.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/ToDateISO.java?rev=1489439&r1=1489438&r2=1489439&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/ToDateISO.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/ToDateISO.java Tue Jun  4 13:28:15 2013
@@ -32,6 +32,9 @@ import org.joda.time.DateTimeZone;
 public class ToDateISO extends EvalFunc<DateTime> {
 
     public DateTime exec(Tuple input) throws IOException {
+        if (input == null || input.size() < 1 || input.get(0) == null) {
+            return null;
+        }
         String dtStr = DataType.toString(input.get(0));
         DateTimeZone dtz = ToDate.extractDateTimeZone(dtStr);
         if (dtz == null) {

Modified: pig/trunk/src/org/apache/pig/builtin/ToMilliSeconds.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/ToMilliSeconds.java?rev=1489439&r1=1489438&r2=1489439&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/ToMilliSeconds.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/ToMilliSeconds.java Tue Jun  4 13:28:15 2013
@@ -73,7 +73,7 @@ public class ToMilliSeconds extends Eval
     @Override
     public Long exec(Tuple input) throws IOException
     {
-        if (input == null || input.size() < 1) {
+        if (input == null || input.size() < 1 || input.get(0) == null) {
             return null;
         }
 

Modified: pig/trunk/src/org/apache/pig/builtin/ToString.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/ToString.java?rev=1489439&r1=1489438&r2=1489439&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/ToString.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/ToString.java Tue Jun  4 13:28:15 2013
@@ -39,7 +39,7 @@ import org.joda.time.format.DateTimeForm
 public class ToString extends EvalFunc<String> {
 
     public String exec(Tuple input) throws IOException {
-        if (input == null) {
+        if (input == null || input.size() < 1 || input.get(0) == null) {
             return null;
         }
         if (input.size() == 1) {

Modified: pig/trunk/src/org/apache/pig/builtin/ToUnixTime.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/ToUnixTime.java?rev=1489439&r1=1489438&r2=1489439&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/ToUnixTime.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/ToUnixTime.java Tue Jun  4 13:28:15 2013
@@ -71,7 +71,7 @@ public class ToUnixTime extends EvalFunc
     public Long exec(Tuple input) throws IOException
     {
         
-        if (input == null || input.size() < 1) {
+        if (input == null || input.size() < 1 || input.get(0) == null) {
             return null;
         }
 

Modified: pig/trunk/test/org/apache/pig/test/TestBuiltin.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestBuiltin.java?rev=1489439&r1=1489438&r2=1489439&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestBuiltin.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestBuiltin.java Tue Jun  4 13:28:15 2013
@@ -443,6 +443,16 @@ public class TestBuiltin {
         t13.set(0, new DateTime(1231290421000L));
         Long ut2 = func7.exec(t11);
         assertEquals(ut2.longValue(), 1231290421000L);
+        
+        // Null handling
+        t1.set(0, null);
+        assertEquals(func1.exec(t1), null);
+        assertEquals(func2.exec(t1), null);
+        assertEquals(func3.exec(t1), null);
+        assertEquals(func4.exec(t1), null);
+        assertEquals(func5.exec(t1), null);
+        assertEquals(func6.exec(t1), null);
+        assertEquals(func7.exec(t1), null);
     }
 
     /**
@@ -2751,6 +2761,19 @@ public class TestBuiltin {
         assertEquals(week.intValue(), 15);
         week = func9.exec(t2);
         assertEquals(week.intValue(), 15);
+        
+        // Null handling
+        t1.set(0, null);
+        assertEquals(func1.exec(t1), null);
+        assertEquals(func2.exec(t1), null);
+        assertEquals(func3.exec(t1), null);
+        assertEquals(func4.exec(t1), null);
+        assertEquals(func5.exec(t1), null);
+        assertEquals(func6.exec(t1), null);
+        assertEquals(func7.exec(t1), null);
+        assertEquals(func8.exec(t1), null);
+        assertEquals(func9.exec(t1), null);
+        
     }
 
 }