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