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 38ad806c1842..7859fd5b4a90 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 void absTestNormal() { 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 82179fff7465..7079bf0d9f15 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 @@ private static InMultiColumnTransformer constructInColumnTransformer( } return new InInt32MultiColumnTransformer(dateSet, valueColumnTransformerList); case INT64: - case TIMESTAMP: Set longSet = new HashSet<>(); + for (Literal value : values) { + longSet.add(((LongLiteral) value).getParsedValue()); + } + return new InInt64MultiColumnTransformer(longSet, valueColumnTransformerList); + case TIMESTAMP: + Set 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 floatSet = new HashSet<>(); for (Literal value : values) {