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

rong 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 8779a95  [IOTDB-2151] Fix extreme() not supported in nested expression 
query (#4574)
8779a95 is described below

commit 8779a951a28106dbf6502c31af93ec5493a112d8
Author: BaiJian <[email protected]>
AuthorDate: Wed Dec 15 11:54:21 2021 +0800

    [IOTDB-2151] Fix extreme() not supported in nested expression query (#4574)
---
 .../aggregation/IoTDBUDFNestAggregationIT.java     | 35 ++++++++++++++++++++++
 .../apache/iotdb/db/utils/TypeInferenceUtils.java  |  1 +
 2 files changed, 36 insertions(+)

diff --git 
a/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBUDFNestAggregationIT.java
 
b/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBUDFNestAggregationIT.java
index 79a1155..65db20d 100644
--- 
a/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBUDFNestAggregationIT.java
+++ 
b/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBUDFNestAggregationIT.java
@@ -220,6 +220,41 @@ public class IoTDBUDFNestAggregationIT {
     }
   }
 
+  @Test
+  public void expressionNestExtremeTest() {
+    // Issue: https://issues.apache.org/jira/browse/IOTDB-2151
+    Object[] retResults = {0L, 5.5F, 0.21511998808D};
+    try (Connection connection = EnvFactory.getEnv().getConnection();
+        Statement statement = connection.createStatement()) {
+      String query =
+          "SELECT extreme(temperature), sin(extreme(temperature) + 1) FROM 
root.ln.wf01.wt01";
+      boolean hasResultSet = statement.execute(query);
+
+      Assert.assertTrue(hasResultSet);
+      try (ResultSet resultSet = statement.getResultSet()) {
+        Assert.assertTrue(resultSet.next());
+        Assert.assertEquals((long) retResults[0], 
resultSet.getLong(TIMESTAMP_STR));
+        Assert.assertEquals((float) retResults[1], resultSet.getFloat(1), E);
+        Assert.assertEquals((double) retResults[2], resultSet.getDouble(2), E);
+        Assert.assertFalse(resultSet.next());
+      }
+
+      hasResultSet = statement.execute(query + " ORDER BY TIME DESC");
+
+      Assert.assertTrue(hasResultSet);
+      try (ResultSet resultSet = statement.getResultSet()) {
+        Assert.assertTrue(resultSet.next());
+        Assert.assertEquals((long) retResults[0], 
resultSet.getLong(TIMESTAMP_STR));
+        Assert.assertEquals((float) retResults[1], resultSet.getFloat(1), E);
+        Assert.assertEquals((double) retResults[2], resultSet.getDouble(2), E);
+        Assert.assertFalse(resultSet.next());
+      }
+    } catch (Exception e) {
+      e.printStackTrace();
+      fail(e.getMessage());
+    }
+  }
+
   // Test FunctionExpression, NegativeExpression and BinaryExpression with 
value filter
   @Test
   public void complexExpressionsWithValueFilterTest() {
diff --git 
a/server/src/main/java/org/apache/iotdb/db/utils/TypeInferenceUtils.java 
b/server/src/main/java/org/apache/iotdb/db/utils/TypeInferenceUtils.java
index 3a94159..04b2327 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/TypeInferenceUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/TypeInferenceUtils.java
@@ -117,6 +117,7 @@ public class TypeInferenceUtils {
       case SQLConstant.LAST_VALUE:
       case SQLConstant.FIRST_VALUE:
       case SQLConstant.MAX_VALUE:
+      case SQLConstant.EXTREME:
         return dataType;
       case SQLConstant.AVG:
       case SQLConstant.SUM:

Reply via email to