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;