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 <[email protected]> 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;
