You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by xi...@apache.org on 2021/09/16 09:07:44 UTC

[iotdb] 04/05: Fix a bug

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

xiangweiwei pushed a commit to branch aggrVector2
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 6515072d5080aef89d43a82396c7fb262430892a
Author: Alima777 <wx...@gmail.com>
AuthorDate: Thu Sep 16 16:08:30 2021 +0800

    Fix a bug
---
 .../java/org/apache/iotdb/AlignedTimeseriesSessionExample.java   | 7 +++++++
 .../org/apache/iotdb/db/query/executor/AggregationExecutor.java  | 9 +++++++--
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/example/session/src/main/java/org/apache/iotdb/AlignedTimeseriesSessionExample.java b/example/session/src/main/java/org/apache/iotdb/AlignedTimeseriesSessionExample.java
index 691ddb4..e7e77b5 100644
--- a/example/session/src/main/java/org/apache/iotdb/AlignedTimeseriesSessionExample.java
+++ b/example/session/src/main/java/org/apache/iotdb/AlignedTimeseriesSessionExample.java
@@ -131,6 +131,13 @@ public class AlignedTimeseriesSessionExample {
     }
 
     dataSet.closeOperationHandle();
+    dataSet = session.executeQueryStatement("select count(*) from root.sg_1.d1.vector");
+    System.out.println(dataSet.getColumnNames());
+    while (dataSet.hasNext()) {
+      System.out.println(dataSet.next());
+    }
+
+    dataSet.closeOperationHandle();
     dataSet =
         session.executeQueryStatement(
             "select sum(*) from root.sg_1.d1.vector where time > 50 and s1 > 0 and s2 > 10000");
diff --git a/server/src/main/java/org/apache/iotdb/db/query/executor/AggregationExecutor.java b/server/src/main/java/org/apache/iotdb/db/query/executor/AggregationExecutor.java
index a750a62..dd5cd75 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/executor/AggregationExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/executor/AggregationExecutor.java
@@ -731,17 +731,22 @@ public class AggregationExecutor {
     Map<PartialPath, List<List<Integer>>> result = new HashMap<>();
     Map<String, VectorPartialPath> temp = new HashMap<>();
 
-    for (PartialPath seriesPath : pathToAggrIndexesMap.keySet()) {
+    List<PartialPath> seriesPaths = new ArrayList<>(pathToAggrIndexesMap.keySet());
+    for (PartialPath seriesPath : seriesPaths) {
       if (seriesPath instanceof VectorPartialPath) {
         List<Integer> indexes = pathToAggrIndexesMap.remove(seriesPath);
         VectorPartialPath groupPath = temp.get(seriesPath.getFullPath());
         if (groupPath == null) {
           groupPath = (VectorPartialPath) seriesPath.copy();
           temp.put(seriesPath.getFullPath(), groupPath);
+          result.computeIfAbsent(groupPath, key -> new ArrayList<>()).add(indexes);
         } else {
+          // groupPath is changed here so we update it
+          List<List<Integer>> subIndexes = result.remove(groupPath);
+          subIndexes.add(indexes);
           groupPath.addSubSensor(((VectorPartialPath) seriesPath).getSubSensorsList());
+          result.put(groupPath, subIndexes);
         }
-        result.computeIfAbsent(groupPath, key -> new ArrayList<>()).add(indexes);
       }
     }
     return result;