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

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


The following commit(s) were added to refs/heads/new_vector by this push:
     new 2fcfe81  [To new_vector] Refactor getAllMeasurementByDevicePath for 
AlignByDevice Refactor (#4356)
2fcfe81 is described below

commit 2fcfe8114044c22ad23a66fad87d3d3d93fe15b5
Author: Marcos_Zyk <[email protected]>
AuthorDate: Thu Nov 11 17:08:14 2021 +0800

    [To new_vector] Refactor getAllMeasurementByDevicePath for AlignByDevice 
Refactor (#4356)
---
 .../main/java/org/apache/iotdb/db/metadata/MManager.java | 16 +++++++++++-----
 .../apache/iotdb/db/metadata/mnode/MeasurementMNode.java |  3 +--
 .../apache/iotdb/db/metadata/path/MeasurementPath.java   |  3 ++-
 .../iotdb/db/query/dataset/AlignByDeviceDataSet.java     | 14 +++-----------
 .../org/apache/iotdb/db/metadata/MManagerBasicTest.java  |  7 ++++---
 .../java/org/apache/iotdb/db/metadata/MetaUtilsTest.java |  8 ++++----
 .../iotdb/db/tools/TsFileAndModSettleToolTest.java       |  2 +-
 7 files changed, 26 insertions(+), 27 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java 
b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
index 9edce98..30b3955 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
@@ -1203,23 +1203,29 @@ public class MManager {
   }
 
   // attention: this path must be a device node
-  public List<IMeasurementSchema> getAllMeasurementByDevicePath(PartialPath 
devicePath)
+  public List<MeasurementPath> getAllMeasurementByDevicePath(PartialPath 
devicePath)
       throws PathNotExistException {
-    Set<IMeasurementSchema> res = new HashSet<>();
+    List<MeasurementPath> res = new LinkedList<>();
     try {
       IMNode node = mNodeCache.get(devicePath);
-      Template template = node.getUpperTemplate();
 
       for (IMNode child : node.getChildren().values()) {
         if (child.isMeasurement()) {
           IMeasurementMNode measurementMNode = child.getAsMeasurementMNode();
-          res.add(measurementMNode.getSchema());
+          res.add(measurementMNode.getMeasurementPath());
         }
       }
 
       // template
+      Template template = node.getUpperTemplate();
       if (node.isUseTemplate() && template != null) {
-        res.addAll(template.getSchemaMap().values());
+        MeasurementPath measurementPath;
+        for (IMeasurementSchema schema : template.getSchemaMap().values()) {
+          measurementPath =
+              new 
MeasurementPath(devicePath.concatNode(schema.getMeasurementId()), schema);
+          
measurementPath.setUnderAlignedEntity(node.getAsEntityMNode().isAligned());
+          res.add(measurementPath);
+        }
       }
     } catch (CacheException e) {
       throw new PathNotExistException(devicePath.getFullPath());
diff --git 
a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/MeasurementMNode.java 
b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/MeasurementMNode.java
index 5289765..90c7635 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/MeasurementMNode.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/MeasurementMNode.java
@@ -82,8 +82,7 @@ public class MeasurementMNode extends MNode implements 
IMeasurementMNode {
    */
   @Override
   public MeasurementPath getMeasurementPath() {
-    MeasurementPath result = new MeasurementPath(super.getPartialPath());
-    result.setMeasurementSchema(schema);
+    MeasurementPath result = new MeasurementPath(super.getPartialPath(), 
schema);
     result.setUnderAlignedEntity(getParent().isAligned());
     return result;
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/metadata/path/MeasurementPath.java 
b/server/src/main/java/org/apache/iotdb/db/metadata/path/MeasurementPath.java
index c3b1ee9..cb3ebf2 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/metadata/path/MeasurementPath.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/metadata/path/MeasurementPath.java
@@ -65,8 +65,9 @@ public class MeasurementPath extends PartialPath {
     super(measurementPath);
   }
 
-  public MeasurementPath(PartialPath measurementPath) {
+  public MeasurementPath(PartialPath measurementPath, IMeasurementSchema 
measurementSchema) {
     super(measurementPath.getNodes());
+    this.measurementSchema = measurementSchema;
   }
 
   public MeasurementPath(String device, String measurement, IMeasurementSchema 
measurementSchema)
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 83cafa6..d2ee07a 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
@@ -35,7 +35,6 @@ import org.apache.iotdb.db.query.context.QueryContext;
 import org.apache.iotdb.db.query.executor.IQueryRouter;
 import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.rpc.RedirectException;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
 import 
org.apache.iotdb.tsfile.exception.filter.QueryFilterOptimizationException;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.read.common.Field;
@@ -45,7 +44,6 @@ import 
org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
 import org.apache.iotdb.tsfile.utils.Binary;
 import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
 import org.apache.iotdb.tsfile.write.schema.UnaryMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.VectorMeasurementSchema;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -231,16 +229,10 @@ public class AlignByDeviceDataSet extends QueryDataSet {
     try {
       Set<String> res = new HashSet<>();
       // TODO: Implement this method in Cluster MManager
-      List<IMeasurementSchema> measurementSchemas =
+      List<MeasurementPath> measurementPaths =
           IoTDB.metaManager.getAllMeasurementByDevicePath(device);
-      for (IMeasurementSchema schema : measurementSchemas) {
-        if (schema instanceof VectorMeasurementSchema) {
-          for (String subMeasurement : schema.getSubMeasurementsList()) {
-            res.add(schema.getMeasurementId() + TsFileConstant.PATH_SEPARATOR 
+ subMeasurement);
-          }
-        } else {
-          res.add(schema.getMeasurementId());
-        }
+      for (MeasurementPath measurementPath : measurementPaths) {
+        res.add(measurementPath.getMeasurement());
       }
 
       return res;
diff --git 
a/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java 
b/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java
index eb2a92a..389c315 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java
@@ -25,6 +25,7 @@ import 
org.apache.iotdb.db.exception.metadata.PathNotExistException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
 import org.apache.iotdb.db.metadata.mnode.IMNode;
 import org.apache.iotdb.db.metadata.mnode.IMeasurementMNode;
+import org.apache.iotdb.db.metadata.path.MeasurementPath;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.metadata.utils.MetaUtils;
 import org.apache.iotdb.db.qp.physical.crud.CreateTemplatePlan;
@@ -870,9 +871,9 @@ public class MManagerBasicTest {
 
     Set<IMeasurementSchema> allSchema =
         new HashSet<>(node.getSchemaTemplate().getSchemaMap().values());
-    for (IMeasurementSchema schema :
-        manager.getAllMeasurementByDevicePath(new PartialPath("root.sg1.d1"))) 
{
-      allSchema.remove(schema);
+    for (MeasurementPath measurementPath :
+        manager.getMeasurementPaths(new PartialPath("root.sg1.d1.*"))) {
+      allSchema.remove(measurementPath.getMeasurementSchema());
     }
 
     assertTrue(allSchema.isEmpty());
diff --git 
a/server/src/test/java/org/apache/iotdb/db/metadata/MetaUtilsTest.java 
b/server/src/test/java/org/apache/iotdb/db/metadata/MetaUtilsTest.java
index ffbdc45..3df2111 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/MetaUtilsTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/MetaUtilsTest.java
@@ -120,15 +120,15 @@ public class MetaUtilsTest {
   public void testGroupAlignedPath() throws MetadataException {
     List<PartialPath> pathList = new ArrayList<>();
 
-    MeasurementPath path1 = new MeasurementPath(new 
PartialPath("root.sg.device.s1"));
+    MeasurementPath path1 = new MeasurementPath(new 
PartialPath("root.sg.device.s1"), null);
     pathList.add(path1);
-    MeasurementPath path2 = new MeasurementPath(new 
PartialPath("root.sg.device.s2"));
+    MeasurementPath path2 = new MeasurementPath(new 
PartialPath("root.sg.device.s2"), null);
     pathList.add(path2);
 
-    MeasurementPath path3 = new MeasurementPath(new 
PartialPath("root.sg.aligned_device.s1"));
+    MeasurementPath path3 = new MeasurementPath(new 
PartialPath("root.sg.aligned_device.s1"), null);
     path3.setUnderAlignedEntity(true);
     pathList.add(path3);
-    MeasurementPath path4 = new MeasurementPath(new 
PartialPath("root.sg.aligned_device.s2"));
+    MeasurementPath path4 = new MeasurementPath(new 
PartialPath("root.sg.aligned_device.s2"), null);
     path4.setUnderAlignedEntity(true);
     pathList.add(path4);
 
diff --git 
a/server/src/test/java/org/apache/iotdb/db/tools/TsFileAndModSettleToolTest.java
 
b/server/src/test/java/org/apache/iotdb/db/tools/TsFileAndModSettleToolTest.java
index 5616937..1afb858 100644
--- 
a/server/src/test/java/org/apache/iotdb/db/tools/TsFileAndModSettleToolTest.java
+++ 
b/server/src/test/java/org/apache/iotdb/db/tools/TsFileAndModSettleToolTest.java
@@ -210,7 +210,7 @@ public class TsFileAndModSettleToolTest {
           String device = entry.getKey();
           for (String sensor : entry.getValue()) {
             tsFileWriter.registerTimeseries(
-                new Path(device, sensor),
+                new Path(device),
                 new UnaryMeasurementSchema(sensor, TSDataType.INT64, 
TSEncoding.RLE));
           }
         }

Reply via email to