You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2022/09/20 05:33:07 UTC
[iotdb] branch master updated: [IOTDB-4453] Fix the overflow of compareTo in TimeRange
This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 81967ee09f [IOTDB-4453] Fix the overflow of compareTo in TimeRange
81967ee09f is described below
commit 81967ee09faefae121e4a6b4606143a454264305
Author: Chen YZ <43...@users.noreply.github.com>
AuthorDate: Tue Sep 20 13:33:01 2022 +0800
[IOTDB-4453] Fix the overflow of compareTo in TimeRange
---
.../apache/iotdb/tsfile/read/common/TimeRange.java | 10 ++++------
.../iotdb/tsfile/read/common/TimeRangeTest.java | 19 +++++++++++++++++++
2 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/TimeRange.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/TimeRange.java
index 969a13d637..b98cd46f0a 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/TimeRange.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/TimeRange.java
@@ -57,16 +57,14 @@ public class TimeRange implements Comparable<TimeRange> {
if (r == null) {
throw new NullPointerException("The input cannot be null!");
}
- long res1 = this.min - r.min;
- if (res1 > 0) {
+ if (this.min > r.min) {
return 1;
- } else if (res1 < 0) {
+ } else if (this.min < r.min) {
return -1;
} else {
- long res2 = this.max - r.max;
- if (res2 > 0) {
+ if (this.max > r.max) {
return 1;
- } else if (res2 < 0) {
+ } else if (this.max < r.max) {
return -1;
} else {
return 0;
diff --git a/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/TimeRangeTest.java b/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/TimeRangeTest.java
index c4be0b3f84..e1a6d5271d 100644
--- a/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/TimeRangeTest.java
+++ b/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/TimeRangeTest.java
@@ -429,4 +429,23 @@ public class TimeRangeTest {
assertEquals(remainRanges.get(0).getLeftClose(), true);
assertEquals(remainRanges.get(0).getRightClose(), true);
}
+
+ @Test
+ public void testCompareTo() {
+ Assert.assertTrue(new TimeRange(Long.MIN_VALUE, 1).compareTo(new TimeRange(5, 6)) < 0);
+ Assert.assertTrue(
+ new TimeRange(Long.MIN_VALUE, 1).compareTo(new TimeRange(Long.MIN_VALUE, 2)) < 0);
+ Assert.assertTrue(new TimeRange(Long.MIN_VALUE, 1).compareTo(new TimeRange(-1, 6)) < 0);
+ Assert.assertTrue(
+ new TimeRange(Long.MIN_VALUE, Long.MAX_VALUE).compareTo(new TimeRange(Long.MIN_VALUE, 2))
+ > 0);
+ Assert.assertTrue(
+ new TimeRange(Long.MIN_VALUE, 1).compareTo(new TimeRange(Long.MIN_VALUE, 0)) > 0);
+ Assert.assertTrue(new TimeRange(0, 3).compareTo(new TimeRange(0, 2)) > 0);
+ Assert.assertTrue(new TimeRange(0, 3).compareTo(new TimeRange(-2, -1)) > 0);
+ Assert.assertTrue(new TimeRange(0, 3).compareTo(new TimeRange(-2, 1)) > 0);
+ Assert.assertTrue(new TimeRange(0, 3).compareTo(new TimeRange(-2, 3)) > 0);
+ Assert.assertTrue(new TimeRange(0, 3).compareTo(new TimeRange(1, 2)) < 0);
+ Assert.assertTrue(new TimeRange(5, 6).compareTo(new TimeRange(5, 6)) == 0);
+ }
}