You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2025/02/13 07:45:08 UTC

(iotdb) 01/01: Check time precision for negative timestamps (#14828)

This is an automated email from the ASF dual-hosted git repository.

haonan pushed a commit to branch check_minus_time_precision_13
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 8980c5eb5427a0f1f0dbb295bea3a73e22a5506d
Author: Haonan <hh...@outlook.com>
AuthorDate: Thu Feb 13 15:37:34 2025 +0800

    Check time precision for negative timestamps (#14828)
---
 .../java/org/apache/iotdb/db/it/IoTDBInsertMultiRowIT.java     |  7 +++++++
 .../java/org/apache/iotdb/db/it/IoTDBInsertWithQueryIT.java    |  1 +
 .../org/apache/iotdb/db/utils/TimestampPrecisionUtils.java     |  4 ++--
 .../org/apache/iotdb/db/utils/TimestampPrecisionUtilsTest.java | 10 ++++++++++
 4 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBInsertMultiRowIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBInsertMultiRowIT.java
index 18c00b125dd..6e52368be4c 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBInsertMultiRowIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBInsertMultiRowIT.java
@@ -171,6 +171,13 @@ public class IoTDBInsertMultiRowIT {
     } catch (SQLException e) {
       assertTrue(e.getMessage().contains("Current system timestamp precision is ms"));
     }
+    try (Statement st1 = connection.createStatement()) {
+      st1.execute(
+          "insert into root.t1.d99.wt01(timestamp, s1, s2) values(-1618283005586000, 1, 1), (-1618283005586001, 1, 2)");
+      fail();
+    } catch (SQLException e) {
+      assertTrue(e.getMessage().contains("Current system timestamp precision is ms"));
+    }
   }
 
   @Test
diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBInsertWithQueryIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBInsertWithQueryIT.java
index d237423c52f..3ebefbba202 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBInsertWithQueryIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBInsertWithQueryIT.java
@@ -52,6 +52,7 @@ public class IoTDBInsertWithQueryIT {
 
   @Before
   public void setUp() throws Exception {
+    EnvFactory.getEnv().getConfig().getCommonConfig().setTimestampPrecisionCheckEnabled(false);
     EnvFactory.getEnv().initClusterEnvironment();
   }
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/TimestampPrecisionUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/TimestampPrecisionUtils.java
index 768d0030e96..676a5023782 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/TimestampPrecisionUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/TimestampPrecisionUtils.java
@@ -70,7 +70,7 @@ public class TimestampPrecisionUtils {
     }
     switch (TIMESTAMP_PRECISION) {
       case "ms":
-        if (time > 10_000_000_000_000L) {
+        if (time > 10_000_000_000_000L || time < -10_000_000_000_000L) {
           throw new SemanticException(
               String.format(
                   "Current system timestamp precision is %s, "
@@ -79,7 +79,7 @@ public class TimestampPrecisionUtils {
         }
         break;
       case "us":
-        if (time > 10_000_000_000_000_000L) {
+        if (time > 10_000_000_000_000_000L || time < -10_000_000_000_000L) {
           throw new SemanticException(
               String.format(
                   "Current system timestamp precision is %s, "
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/TimestampPrecisionUtilsTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/TimestampPrecisionUtilsTest.java
index 87585cc663f..7c7893e49af 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/TimestampPrecisionUtilsTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/TimestampPrecisionUtilsTest.java
@@ -45,6 +45,11 @@ public class TimestampPrecisionUtilsTest {
       fail();
     } catch (Exception ignored) {
     }
+    try {
+      TimestampPrecisionUtils.checkTimestampPrecision(-1694689856546000L);
+      fail();
+    } catch (Exception ignored) {
+    }
   }
 
   @Test
@@ -68,6 +73,11 @@ public class TimestampPrecisionUtilsTest {
       fail();
     } catch (Exception ignored) {
     }
+    try {
+      TimestampPrecisionUtils.checkTimestampPrecision(-1694689856546000000L);
+      fail();
+    } catch (Exception ignored) {
+    }
   }
 
   @Test