You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by ji...@apache.org on 2014/03/27 05:57:22 UTC
git commit: TAJO-679: TimestampDatum, TimeDatum,
DateDatum should be able to be compared with NullDatum. (Alvin
Henrick via jihoon)
Repository: tajo
Updated Branches:
refs/heads/master b1e0e3499 -> 6e6bac4c9
TAJO-679: TimestampDatum, TimeDatum, DateDatum should be able to be compared with NullDatum. (Alvin Henrick via jihoon)
Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/6e6bac4c
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/6e6bac4c
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/6e6bac4c
Branch: refs/heads/master
Commit: 6e6bac4c95293b689a1dc5a1d1798e0c1d60f58c
Parents: b1e0e34
Author: Jihoon Son <ji...@apache.org>
Authored: Thu Mar 27 13:56:47 2014 +0900
Committer: Jihoon Son <ji...@apache.org>
Committed: Thu Mar 27 13:56:47 2014 +0900
----------------------------------------------------------------------
CHANGES.txt | 3 +++
.../src/main/java/org/apache/tajo/datum/DateDatum.java | 7 +++++--
.../src/main/java/org/apache/tajo/datum/TimeDatum.java | 7 +++++--
.../main/java/org/apache/tajo/datum/TimestampDatum.java | 7 +++++--
.../test/java/org/apache/tajo/datum/TestDateDatum.java | 8 ++++++++
.../test/java/org/apache/tajo/datum/TestTimeDatum.java | 8 ++++++++
.../java/org/apache/tajo/datum/TestTimestampDatum.java | 10 +++++++++-
7 files changed, 43 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/6e6bac4c/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 0c818bd..f238f5a 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -283,6 +283,9 @@ Release 0.8.0 - unreleased
BUG FIXES
+ TAJO-679: TimestampDatum, TimeDatum, DateDatum should be able to be compared
+ with NullDatum. (Alvin Henrick via jihoon)
+
TAJO-716: Using column names actually aliased in aggregation functions
can cause planning error. (hyunsik)
http://git-wip-us.apache.org/repos/asf/tajo/blob/6e6bac4c/tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java b/tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java
index 5e0c26d..e489a09 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java
@@ -157,7 +157,7 @@ public class DateDatum extends Datum {
public Datum equalsTo(Datum datum) {
if (datum.type() == TajoDataTypes.Type.TIME) {
return DatumFactory.createBool(date.equals(((DateDatum) datum).date));
- } else if (datum.isNull()) {
+ } else if (datum instanceof NullDatum || datum.isNull()) {
return datum;
} else {
throw new InvalidOperationException();
@@ -168,7 +168,7 @@ public class DateDatum extends Datum {
public int compareTo(Datum datum) {
if (datum.type() == TajoDataTypes.Type.DATE) {
return date.compareTo(((DateDatum)datum).date);
- } else if (datum.type() == TajoDataTypes.Type.NULL_TYPE) {
+ } else if (datum instanceof NullDatum || datum.isNull()) {
return -1;
} else {
throw new InvalidOperationException();
@@ -176,6 +176,9 @@ public class DateDatum extends Datum {
}
public boolean equals(Object obj) {
+ if (obj instanceof NullDatum) {
+ return false;
+ }
if (obj instanceof DateDatum) {
DateDatum another = (DateDatum) obj;
return date.isEqual(another.date);
http://git-wip-us.apache.org/repos/asf/tajo/blob/6e6bac4c/tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java b/tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java
index 55023da..8b18f08 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java
@@ -129,7 +129,7 @@ public class TimeDatum extends Datum {
public Datum equalsTo(Datum datum) {
if (datum.type() == TajoDataTypes.Type.TIME) {
return DatumFactory.createBool(time.equals(((TimeDatum) datum).time));
- } else if (datum.isNull()) {
+ } else if (datum instanceof NullDatum || datum.isNull()) {
return datum;
} else {
throw new InvalidOperationException();
@@ -140,7 +140,7 @@ public class TimeDatum extends Datum {
public int compareTo(Datum datum) {
if (datum.type() == TajoDataTypes.Type.TIME) {
return time.compareTo(((TimeDatum)datum).time);
- } else if (datum.isNull()) {
+ } else if (datum instanceof NullDatum || datum.isNull()) {
return -1;
} else {
throw new InvalidOperationException();
@@ -148,6 +148,9 @@ public class TimeDatum extends Datum {
}
public boolean equals(Object obj) {
+ if (obj instanceof NullDatum) {
+ return false;
+ }
if (obj instanceof TimeDatum) {
TimeDatum another = (TimeDatum) obj;
return time.isEqual(another.time);
http://git-wip-us.apache.org/repos/asf/tajo/blob/6e6bac4c/tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java b/tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java
index 8dfa318..e7a9861 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java
@@ -160,7 +160,7 @@ public class TimestampDatum extends Datum {
public Datum equalsTo(Datum datum) {
if (datum.type() == TajoDataTypes.Type.TIME) {
return DatumFactory.createBool(dateTime.equals(((TimestampDatum) datum).dateTime));
- } else if (datum.isNull()) {
+ } else if (datum instanceof NullDatum || datum.isNull()) {
return datum;
} else {
throw new InvalidOperationException();
@@ -171,7 +171,7 @@ public class TimestampDatum extends Datum {
public int compareTo(Datum datum) {
if (datum.type() == TajoDataTypes.Type.TIMESTAMP) {
return dateTime.compareTo(((TimestampDatum)datum).dateTime);
- } else if (datum.isNull()) {
+ } else if (datum instanceof NullDatum || datum.isNull()) {
return -1;
} else {
throw new InvalidOperationException();
@@ -180,6 +180,9 @@ public class TimestampDatum extends Datum {
@Override
public boolean equals(Object obj) {
+ if (obj instanceof NullDatum) {
+ return false;
+ }
if (obj instanceof TimestampDatum) {
TimestampDatum another = (TimestampDatum) obj;
return dateTime.isEqual(another.dateTime);
http://git-wip-us.apache.org/repos/asf/tajo/blob/6e6bac4c/tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java
index 8d3b146..dd915f5 100644
--- a/tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java
+++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java
@@ -108,4 +108,12 @@ public class TestDateDatum {
assertEquals(4, d.getMonthOfYear());
assertEquals(1, d.getDayOfMonth());
}
+
+ @Test
+ public final void testNull() {
+ Datum d = DatumFactory.createDate(DATE);
+ assertEquals(Boolean.FALSE,d.equals(DatumFactory.createNullDatum()));
+ assertEquals(DatumFactory.createNullDatum(),d.equalsTo(DatumFactory.createNullDatum()));
+ assertEquals(-1,d.compareTo(DatumFactory.createNullDatum()));
+ }
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/6e6bac4c/tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java
index d2b138e..63f8252 100644
--- a/tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java
+++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java
@@ -121,4 +121,12 @@ public class TestTimeDatum {
assertEquals(34, copy.getMinuteOfHour());
assertEquals(56, copy.getSecondOfMinute());
}
+
+ @Test
+ public final void testNull() {
+ Datum d = DatumFactory.createTime(TIME);
+ assertEquals(Boolean.FALSE,d.equals(DatumFactory.createNullDatum()));
+ assertEquals(DatumFactory.createNullDatum(),d.equalsTo(DatumFactory.createNullDatum()));
+ assertEquals(-1,d.compareTo(DatumFactory.createNullDatum()));
+ }
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/6e6bac4c/tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java
index bb06946..246791b 100644
--- a/tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java
+++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java
@@ -39,7 +39,7 @@ public class TestTimestampDatum {
@Test
public final void testType() {
Datum d = DatumFactory.createTimeStamp(timestamp);
- assertEquals(Type.TIMESTAMP, d.type());
+ assertEquals(Type.TIMESTAMP, d.type());
}
@Test(expected = InvalidCastException.class)
@@ -111,4 +111,12 @@ public class TestTimestampDatum {
assertEquals(50, d.getMinuteOfHour());
assertEquals(01, d.getSecondOfMinute());
}
+
+ @Test
+ public final void testNull() {
+ Datum d = DatumFactory.createTimeStamp(timestamp);
+ assertEquals(Boolean.FALSE,d.equals(DatumFactory.createNullDatum()));
+ assertEquals(DatumFactory.createNullDatum(),d.equalsTo(DatumFactory.createNullDatum()));
+ assertEquals(-1,d.compareTo(DatumFactory.createNullDatum()));
+ }
}