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 f244e0ed0d8 Fix the bug in using negation for timestamp type
f244e0ed0d8 is described below
commit f244e0ed0d8ac536100765bda542867fe5a7f371
Author: FearfulTomcat27 <[email protected]>
AuthorDate: Wed Sep 18 14:06:13 2024 +0800
Fix the bug in using negation for timestamp type
---
.../it/query/old/query/IoTDBArithmeticTableIT.java | 12 ++++++++++++
.../templates/ArithmeticColumnTransformerApi.ftl | 17 ++++++++++++-----
.../templates/ArithmeticUnaryColumnTransformer.ftl | 6 +++---
3 files changed, 27 insertions(+), 8 deletions(-)
diff --git
a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/query/IoTDBArithmeticTableIT.java
b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/query/IoTDBArithmeticTableIT.java
index 1dfd5dcc05a..5acc139d539 100644
---
a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/query/IoTDBArithmeticTableIT.java
+++
b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/query/IoTDBArithmeticTableIT.java
@@ -197,6 +197,18 @@ public class IoTDBArithmeticTableIT {
}
}
+ @Test
+ public void testTimestampNegation() {
+ String sql = "select -s6 from table1";
+ tableResultSetEqualTest(
+ sql,
+ new String[] {"_col0"},
+ new String[] {
+ "1969-12-31T23:59:59.990Z,", "1969-12-31T23:59:59.980Z,",
"1969-12-31T23:59:59.970Z,"
+ },
+ DATABASE_NAME);
+ }
+
@Test
public void testBinaryWrongType() {
diff --git
a/iotdb-core/datanode/src/main/codegen/templates/ArithmeticColumnTransformerApi.ftl
b/iotdb-core/datanode/src/main/codegen/templates/ArithmeticColumnTransformerApi.ftl
index 3ec6a9b432c..28e99e3d0e1 100644
---
a/iotdb-core/datanode/src/main/codegen/templates/ArithmeticColumnTransformerApi.ftl
+++
b/iotdb-core/datanode/src/main/codegen/templates/ArithmeticColumnTransformerApi.ftl
@@ -23,12 +23,12 @@ import
org.apache.iotdb.db.queryengine.plan.relational.function.arithmetic.Divis
import
org.apache.iotdb.db.queryengine.plan.relational.function.arithmetic.ModulusResolver;
import
org.apache.iotdb.db.queryengine.plan.relational.function.arithmetic.MultiplicationResolver;
import
org.apache.iotdb.db.queryengine.plan.relational.function.arithmetic.SubtractionResolver;
-import
org.apache.iotdb.db.queryengine.plan.relational.metadata.OperatorNotFoundException;
import
org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
import
org.apache.iotdb.db.queryengine.transformation.dag.column.unary.DoubleNegationColumnTransformer;
import
org.apache.iotdb.db.queryengine.transformation.dag.column.unary.FloatNegationColumnTransformer;
import
org.apache.iotdb.db.queryengine.transformation.dag.column.unary.IntNegationColumnTransformer;
import
org.apache.iotdb.db.queryengine.transformation.dag.column.unary.LongNegationColumnTransformer;
+import
org.apache.iotdb.db.queryengine.transformation.dag.column.unary.TimestampNegationColumnTransformer;
import java.time.ZoneId;
import java.util.Arrays;
@@ -63,13 +63,20 @@ public class ArithmeticColumnTransformerApi {
public static ColumnTransformer getNegationTransformer(ColumnTransformer
columnTransformer) {
switch (columnTransformer.getType().getTypeEnum()) {
case INT32:
- return new IntNegationColumnTransformer(columnTransformer.getType(),
columnTransformer);
+ return new IntNegationColumnTransformer(
+ columnTransformer.getType(), columnTransformer);
case INT64:
- return new LongNegationColumnTransformer(columnTransformer.getType(),
columnTransformer);
+ return new LongNegationColumnTransformer(
+ columnTransformer.getType(), columnTransformer);
case FLOAT:
- return new FloatNegationColumnTransformer(columnTransformer.getType(),
columnTransformer);
+ return new FloatNegationColumnTransformer(
+ columnTransformer.getType(), columnTransformer);
case DOUBLE:
- return new
DoubleNegationColumnTransformer(columnTransformer.getType(), columnTransformer);
+ return new DoubleNegationColumnTransformer(
+ columnTransformer.getType(), columnTransformer);
+ case TIMESTAMP:
+ return new TimestampNegationColumnTransformer(
+ columnTransformer.getType(), columnTransformer);
default:
throw new UnsupportedOperationException("Unsupported Type");
}
diff --git
a/iotdb-core/datanode/src/main/codegen/templates/ArithmeticUnaryColumnTransformer.ftl
b/iotdb-core/datanode/src/main/codegen/templates/ArithmeticUnaryColumnTransformer.ftl
index cfd49a51223..269c687bec7 100644
---
a/iotdb-core/datanode/src/main/codegen/templates/ArithmeticUnaryColumnTransformer.ftl
+++
b/iotdb-core/datanode/src/main/codegen/templates/ArithmeticUnaryColumnTransformer.ftl
@@ -16,7 +16,7 @@
<#list mathematicalDataType.types as type>
<#assign newType = type.type?replace("Type","")>
<#assign className = "${newType}NegationColumnTransformer">
-<#if newType != "Date" && newType != "Timestamp">
+<#if newType != "Date">
<@pp.changeOutputFile
name="/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/${className}.java"
/>
package org.apache.iotdb.db.queryengine.transformation.dag.column.unary;
@@ -55,8 +55,8 @@ public class ${className} extends UnaryColumnTransformer {
}
public static ${type.dataType} transform(${type.dataType} value){
- <#if type.dataType == "Int" || type.dataType == "Long">
- if(value == ${type.dataType}.MIN_VALUE){
+ <#if type.dataType == "int" || type.dataType == "long">
+ if(value == <#if type.dataType ==
"int">Integer<#else>Long</#if>.MIN_VALUE){
throw new IoTDBRuntimeException(String.format("The %s is out of range of
${type.dataType}.", value), NUMERIC_VALUE_OUT_OF_RANGE.getStatusCode(), true);
}
</#if>