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