You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ro...@apache.org on 2022/04/25 07:10:45 UTC

[iotdb] branch rel/0.13 updated: [IOTDB-2888] Unary expression can followed by a constant (#5580)

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

rong pushed a commit to branch rel/0.13
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/rel/0.13 by this push:
     new 3d6af36ac8 [IOTDB-2888] Unary expression can followed by a constant (#5580)
3d6af36ac8 is described below

commit 3d6af36ac8815edf042f52e8f4f87d84f19e0970
Author: flashzxi <39...@users.noreply.github.com>
AuthorDate: Mon Apr 25 15:10:39 2022 +0800

    [IOTDB-2888] Unary expression can followed by a constant (#5580)
---
 .../apache/iotdb/db/integration/IoTDBSelectSchemaIT.java | 16 ++++++++++++----
 .../core/transformer/ArithmeticNegationTransformer.java  |  6 +++++-
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectSchemaIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectSchemaIT.java
index 91a7ce0c59..ee6c9412fc 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectSchemaIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectSchemaIT.java
@@ -77,22 +77,30 @@ public class IoTDBSelectSchemaIT {
   @Test
   public void testSchemaExpression() {
     String[] expressions = {
-      "s1+s2", "-s1+s2", "-(s1+s3)", "-(-(s1))", "((s1+s2)*s3)",
+      "s1+s2", "-s1+s2", "-(s1+s3)", "-(-(s1))", "((s1+s2)*s3)", "-2+s1", "-(-1)+s1"
     };
     String[] completeExpressions = {
       "root.sg.d1.s1+root.sg.d1.s2",
       "-root.sg.d1.s1+root.sg.d1.s2",
       "-(root.sg.d1.s1+root.sg.d1.s3)",
       "-(-root.sg.d1.s1)",
-      "(root.sg.d1.s1+root.sg.d1.s2)*root.sg.d1.s3"
+      "(root.sg.d1.s1+root.sg.d1.s2)*root.sg.d1.s3",
+      "-2+root.sg.d1.s1",
+      "-(-1)+root.sg.d1.s1"
     };
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
       ResultSet resultSet =
           statement.executeQuery(
               String.format(
-                  "select %s, %s, %s, %s, %s from root.sg.d1",
-                  expressions[0], expressions[1], expressions[2], expressions[3], expressions[4]));
+                  "select %s, %s, %s, %s, %s, %s, %s from root.sg.d1",
+                  expressions[0],
+                  expressions[1],
+                  expressions[2],
+                  expressions[3],
+                  expressions[4],
+                  expressions[5],
+                  expressions[6]));
       int columnCount = resultSet.getMetaData().getColumnCount();
       assertEquals(1 + expressions.length, columnCount);
 
diff --git a/server/src/main/java/org/apache/iotdb/db/query/udf/core/transformer/ArithmeticNegationTransformer.java b/server/src/main/java/org/apache/iotdb/db/query/udf/core/transformer/ArithmeticNegationTransformer.java
index 27093ee44b..1fa710b208 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/udf/core/transformer/ArithmeticNegationTransformer.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/udf/core/transformer/ArithmeticNegationTransformer.java
@@ -43,7 +43,11 @@ public class ArithmeticNegationTransformer extends Transformer {
     if (!layerPointReader.next()) {
       return false;
     }
-    cachedTime = layerPointReader.currentTime();
+    // Constant doesn't have currentTime(), it will be determined by the other part in
+    // BinaryTransformer
+    if (!isConstantPointReader()) {
+      cachedTime = layerPointReader.currentTime();
+    }
     if (layerPointReader.isCurrentNull()) {
       currentNull = true;
     } else {