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) {