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

qiaojialin 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 8253181  add expression in group by align by device (#1853)
8253181 is described below

commit 8253181ba9ab3225e8a43758e88d4c85e777b337
Author: Xiangwei Wei <[email protected]>
AuthorDate: Sun Oct 25 23:21:46 2020 +0800

    add expression in group by align by device (#1853)
---
 .../db/query/dataset/AlignByDeviceDataSet.java     |  1 +
 .../iotdb/db/integration/IoTDBAlignByDeviceIT.java | 42 ++++++++++++++++++++++
 2 files changed, 43 insertions(+)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/query/dataset/AlignByDeviceDataSet.java
 
b/server/src/main/java/org/apache/iotdb/db/query/dataset/AlignByDeviceDataSet.java
index 95a7c8d..00a49c4 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/query/dataset/AlignByDeviceDataSet.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/query/dataset/AlignByDeviceDataSet.java
@@ -169,6 +169,7 @@ public class AlignByDeviceDataSet extends QueryDataSet {
             groupByTimePlan.setDeduplicatedPaths(executePaths);
             groupByTimePlan.setDeduplicatedDataTypes(tsDataTypes);
             groupByTimePlan.setDeduplicatedAggregations(executeAggregations);
+            groupByTimePlan.setExpression(expression);
             currentDataSet = queryRouter.groupBy(groupByTimePlan, context);
             break;
           case AGGREGATE:
diff --git 
a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAlignByDeviceIT.java
 
b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAlignByDeviceIT.java
index b93c08c..e4a319a 100644
--- 
a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAlignByDeviceIT.java
+++ 
b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAlignByDeviceIT.java
@@ -491,6 +491,48 @@ public class IoTDBAlignByDeviceIT {
   }
 
   @Test
+  public void groupByTimeWithValueFilterTest() throws ClassNotFoundException {
+    String[] retArray = new String[]{
+        "2,root.vehicle.d0,2,",
+        "102,root.vehicle.d0,1",
+    };
+
+    Class.forName(Config.JDBC_DRIVER_NAME);
+    try (Connection connection = DriverManager
+        .getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", 
"root");
+        Statement statement = connection.createStatement()) {
+      boolean hasResultSet = statement.execute(
+          "select count(s2) from root.vehicle.d0 where s2 > 3 and s2 <= 10 
GROUP BY ([2,200),100ms) align by device");
+      Assert.assertTrue(hasResultSet);
+
+      try (ResultSet resultSet = statement.getResultSet()) {
+        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
+        List<Integer> actualIndexToExpectedIndexList = 
checkHeader(resultSetMetaData,
+            "Time,Device,count(s2)",
+            new int[]{Types.TIMESTAMP, Types.VARCHAR, Types.BIGINT,});
+
+        int cnt = 0;
+        while (resultSet.next()) {
+          String[] expectedStrings = retArray[cnt].split(",");
+          StringBuilder expectedBuilder = new StringBuilder();
+          StringBuilder actualBuilder = new StringBuilder();
+          for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
+            actualBuilder.append(resultSet.getString(i)).append(",");
+            
expectedBuilder.append(expectedStrings[actualIndexToExpectedIndexList.get(i - 
1)])
+                .append(",");
+          }
+          Assert.assertEquals(expectedBuilder.toString(), 
actualBuilder.toString());
+          cnt++;
+        }
+        Assert.assertEquals(2, cnt);
+      }
+    } catch (Exception e) {
+      e.printStackTrace();
+      fail(e.getMessage());
+    }
+  }
+
+  @Test
   public void fillTest() throws ClassNotFoundException {
     String[] retArray = new String[]{
         "3,root.vehicle.d0,10000,40000,3.33,null,null,",

Reply via email to