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));
}
}