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

hui pushed a commit to branch lmh/AlignedPathGroupDebug
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit cc466fc9405c722873d2ff944b52b36b09718c75
Author: liuminghui233 <[email protected]>
AuthorDate: Mon May 30 21:04:48 2022 +0800

    Fix aligned path group bug
---
 .../java/org/apache/iotdb/db/metadata/utils/MetaUtils.java   | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/metadata/utils/MetaUtils.java 
b/server/src/main/java/org/apache/iotdb/db/metadata/utils/MetaUtils.java
index 96189b8551..5c2c4ff3b5 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/utils/MetaUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/utils/MetaUtils.java
@@ -73,21 +73,23 @@ public class MetaUtils {
    */
   public static List<PartialPath> groupAlignedPaths(List<PartialPath> 
fullPaths) {
     List<PartialPath> result = new LinkedList<>();
-    AlignedPath alignedPath = null;
+    Map<String, AlignedPath> deviceToAlignedPathMap = new HashMap<>();
     for (PartialPath path : fullPaths) {
       MeasurementPath measurementPath = (MeasurementPath) path;
       if (!measurementPath.isUnderAlignedEntity()) {
         result.add(measurementPath);
-        alignedPath = null;
       } else {
-        if (alignedPath == null || 
!alignedPath.equals(measurementPath.getDevice())) {
-          alignedPath = new AlignedPath(measurementPath);
-          result.add(alignedPath);
+        String deviceName = measurementPath.getDevice();
+        if (!deviceToAlignedPathMap.containsKey(deviceName)) {
+          AlignedPath alignedPath = new AlignedPath(measurementPath);
+          deviceToAlignedPathMap.put(deviceName, alignedPath);
         } else {
+          AlignedPath alignedPath = deviceToAlignedPathMap.get(deviceName);
           alignedPath.addMeasurement(measurementPath);
         }
       }
     }
+    result.addAll(deviceToAlignedPathMap.values());
     return result;
   }
 

Reply via email to