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: