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 3453796ba2e Fix bug while using NOT IN predicate for INT64 type
3453796ba2e is described below

commit 3453796ba2e6c72dab9a18000778fc6d9067246c
Author: Jackie Tien <[email protected]>
AuthorDate: Sat Sep 14 09:11:01 2024 +0800

    Fix bug while using NOT IN predicate for INT64 type
---
 .../scalar/IoTDBScalarFunctionTableIT.java                | 15 +++++++++++++++
 .../execution/relational/ColumnTransformerBuilder.java    | 11 ++++++++---
 2 files changed, 23 insertions(+), 3 deletions(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/builtinfunction/scalar/IoTDBScalarFunctionTableIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/builtinfunction/scalar/IoTDBScalarFunctionTableIT.java
index 38ad806c184..7859fd5b4a9 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/builtinfunction/scalar/IoTDBScalarFunctionTableIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/builtinfunction/scalar/IoTDBScalarFunctionTableIT.java
@@ -383,6 +383,21 @@ public class IoTDBScalarFunctionTableIT {
         DATABASE_NAME);
   }
 
+  @Test
+  public void testINT64NotIn() {
+    // case 1: support INT32, INT64, FLOAT, DOUBLE
+    String[] expectedHeader = new String[] {"time", "s3"};
+    String[] expectedAns =
+        new String[] {
+          "1970-01-01T00:00:00.002Z,-1,", "1970-01-01T00:00:00.003Z,-2,",
+        };
+    tableResultSetEqualTest(
+        "select time,s3 from absTable where s3 not in (1)",
+        expectedHeader,
+        expectedAns,
+        DATABASE_NAME);
+  }
+
   @Test
   public void testBlobCompare() {
     // case 1: support INT32, INT64, FLOAT, DOUBLE
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/relational/ColumnTransformerBuilder.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/relational/ColumnTransformerBuilder.java
index 82179fff746..7079bf0d9f1 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/relational/ColumnTransformerBuilder.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/relational/ColumnTransformerBuilder.java
@@ -1055,16 +1055,21 @@ public class ColumnTransformerBuilder
         }
         return new InInt32MultiColumnTransformer(dateSet, 
valueColumnTransformerList);
       case INT64:
-      case TIMESTAMP:
         Set<Long> longSet = new HashSet<>();
+        for (Literal value : values) {
+          longSet.add(((LongLiteral) value).getParsedValue());
+        }
+        return new InInt64MultiColumnTransformer(longSet, 
valueColumnTransformerList);
+      case TIMESTAMP:
+        Set<Long> timestampSet = new HashSet<>();
         for (Literal value : values) {
           try {
-            longSet.add(Long.parseLong(((GenericLiteral) value).getValue()));
+            timestampSet.add(Long.parseLong(((GenericLiteral) 
value).getValue()));
           } catch (IllegalArgumentException e) {
             throw new SemanticException(String.format(errorMsg, value, 
childType));
           }
         }
-        return new InInt64MultiColumnTransformer(longSet, 
valueColumnTransformerList);
+        return new InInt64MultiColumnTransformer(timestampSet, 
valueColumnTransformerList);
       case FLOAT:
         Set<Float> floatSet = new HashSet<>();
         for (Literal value : values) {

Reply via email to