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 2022/11/03 02:17:40 UTC

[iotdb] branch fix_type_infer created (now 16b7c3b02a)

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

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


      at 16b7c3b02a [IOTDB-4842] Fix type infer error when insert a large number

This branch includes the following new commits:

     new 16b7c3b02a [IOTDB-4842] Fix type infer error when insert a large number

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[iotdb] 01/01: [IOTDB-4842] Fix type infer error when insert a large number

Posted by ha...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 16b7c3b02a4a82606c20ffc4f1cac4639975b416
Author: HTHou <hh...@outlook.com>
AuthorDate: Thu Nov 3 10:16:40 2022 +0800

    [IOTDB-4842] Fix type infer error when insert a large number
---
 .../iotdb/db/it/aligned/IoTDBInsertAlignedValuesIT.java       | 11 +++++++++++
 .../java/org/apache/iotdb/db/utils/TypeInferenceUtils.java    |  6 +++++-
 .../org/apache/iotdb/db/utils/TypeInferenceUtilsTest.java     |  2 ++
 3 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/aligned/IoTDBInsertAlignedValuesIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/aligned/IoTDBInsertAlignedValuesIT.java
index 8a9e571f4c..d2683d06e6 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/aligned/IoTDBInsertAlignedValuesIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/aligned/IoTDBInsertAlignedValuesIT.java
@@ -337,4 +337,15 @@ public class IoTDBInsertAlignedValuesIT {
       assertTrue(e.getMessage(), e.getMessage().contains("data type is not consistent"));
     }
   }
+
+  @Test
+  public void testInsertLargeNumber() {
+    try (Connection connection = EnvFactory.getEnv().getConnection();
+        Statement statement = connection.createStatement()) {
+      statement.execute(
+          "insert into root.sg1.d1(time, s98, s99) aligned values(10, 2, 271840880000000000000000)");
+    } catch (SQLException e) {
+      fail();
+    }
+  }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/TypeInferenceUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/TypeInferenceUtils.java
index 6135b2b31b..3485e62eaa 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/TypeInferenceUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/TypeInferenceUtils.java
@@ -64,7 +64,11 @@ public class TypeInferenceUtils {
   }
 
   private static boolean isConvertFloatPrecisionLack(String s) {
-    return Long.parseLong(s) > (1 << 24);
+    try {
+      return Long.parseLong(s) > (1 << 24);
+    } catch (NumberFormatException e) {
+      return true;
+    }
   }
 
   /** Get predicted DataType of the given value */
diff --git a/server/src/test/java/org/apache/iotdb/db/utils/TypeInferenceUtilsTest.java b/server/src/test/java/org/apache/iotdb/db/utils/TypeInferenceUtilsTest.java
index 4b374c87e0..89b8b00bd6 100644
--- a/server/src/test/java/org/apache/iotdb/db/utils/TypeInferenceUtilsTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/utils/TypeInferenceUtilsTest.java
@@ -75,6 +75,7 @@ public class TypeInferenceUtilsTest {
       " 7112324 ",
       "16777217", // 2^24 + 1
       "16777216", // 2^24
+      "271840880000000000000000",
     };
     TSDataType[] encodings = {
       IoTDBDescriptor.getInstance().getConfig().getIntegerStringInferType(),
@@ -90,6 +91,7 @@ public class TypeInferenceUtilsTest {
       IoTDBDescriptor.getInstance().getConfig().getIntegerStringInferType(),
       IoTDBDescriptor.getInstance().getConfig().getLongStringInferType(),
       IoTDBDescriptor.getInstance().getConfig().getIntegerStringInferType(),
+      IoTDBDescriptor.getInstance().getConfig().getLongStringInferType(),
     };
 
     for (int i = 0; i < values.length; i++) {