You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by zy...@apache.org on 2022/07/29 05:46:40 UTC
[iotdb] branch master updated: Extract ISchemaTree interface (#6830)
This is an automated email from the ASF dual-hosted git repository.
zyk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 903a9d6ac0 Extract ISchemaTree interface (#6830)
903a9d6ac0 is described below
commit 903a9d6ac0025ab6e8b298ebd8011bb73f252876
Author: Marcos_Zyk <38...@users.noreply.github.com>
AuthorDate: Fri Jul 29 13:46:35 2022 +0800
Extract ISchemaTree interface (#6830)
Extract ISchemaTree interface (#6830)
---
.../db/metadata/cache/DataNodeSchemaCache.java | 9 +--
.../{SchemaTree.java => ClusterSchemaTree.java} | 22 +++++--
.../db/mpp/common/schematree/ISchemaTree.java | 70 ++++++++++++++++++++++
.../operator/schema/SchemaFetchScanOperator.java | 4 +-
.../apache/iotdb/db/mpp/plan/analyze/Analysis.java | 8 +--
.../iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java | 37 ++++--------
.../db/mpp/plan/analyze/ClusterSchemaFetcher.java | 41 ++++++-------
.../db/mpp/plan/analyze/ExpressionAnalyzer.java | 10 ++--
.../db/mpp/plan/analyze/FakeSchemaFetcherImpl.java | 11 ++--
.../iotdb/db/mpp/plan/analyze/ISchemaFetcher.java | 8 +--
.../iotdb/db/mpp/plan/analyze/SchemaValidator.java | 6 +-
.../mpp/plan/analyze/StandaloneSchemaFetcher.java | 33 +++++-----
.../db/mpp/plan/planner/LogicalPlanVisitor.java | 9 ---
.../planner/plan/node/write/DeleteDataNode.java | 6 +-
.../plan/node/write/InsertMultiTabletsNode.java | 4 +-
.../plan/planner/plan/node/write/InsertNode.java | 4 +-
.../planner/plan/node/write/InsertRowNode.java | 4 +-
.../planner/plan/node/write/InsertRowsNode.java | 4 +-
.../plan/node/write/InsertRowsOfOneDeviceNode.java | 4 +-
.../planner/plan/node/write/InsertTabletNode.java | 4 +-
.../db/mpp/plan/statement/StatementVisitor.java | 5 --
.../internal/LastPointFetchStatement.java | 58 ------------------
.../db/metadata/cache/DataNodeSchemaCacheTest.java | 11 ++--
...emaTreeTest.java => ClusterSchemaTreeTest.java} | 28 ++++-----
.../schema/SchemaFetchScanOperatorTest.java | 5 +-
25 files changed, 202 insertions(+), 203 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/cache/DataNodeSchemaCache.java b/server/src/main/java/org/apache/iotdb/db/metadata/cache/DataNodeSchemaCache.java
index bb5410dae3..17cf02d7c3 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/cache/DataNodeSchemaCache.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/cache/DataNodeSchemaCache.java
@@ -23,7 +23,8 @@ import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.metadata.path.MeasurementPath;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
+import org.apache.iotdb.db.mpp.common.schematree.ClusterSchemaTree;
+import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.db.service.metrics.MetricsService;
import org.apache.iotdb.db.service.metrics.enums.Metric;
import org.apache.iotdb.db.service.metrics.enums.Tag;
@@ -86,8 +87,8 @@ public class DataNodeSchemaCache {
* @param measurements
* @return timeseries partialPath and its SchemaEntity
*/
- public SchemaTree get(PartialPath devicePath, String[] measurements) {
- SchemaTree schemaTree = new SchemaTree();
+ public ClusterSchemaTree get(PartialPath devicePath, String[] measurements) {
+ ClusterSchemaTree schemaTree = new ClusterSchemaTree();
SchemaCacheEntry schemaCacheEntry;
for (String measurement : measurements) {
PartialPath path = devicePath.concatNode(measurement);
@@ -104,7 +105,7 @@ public class DataNodeSchemaCache {
return schemaTree;
}
- public void put(SchemaTree schemaTree) {
+ public void put(ISchemaTree schemaTree) {
for (MeasurementPath measurementPath : schemaTree.getAllMeasurement()) {
SchemaCacheEntry schemaCacheEntry =
new SchemaCacheEntry(
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/SchemaTree.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/ClusterSchemaTree.java
similarity index 95%
rename from server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/SchemaTree.java
rename to server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/ClusterSchemaTree.java
index fb7b7a6b48..f4d23b628a 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/SchemaTree.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/ClusterSchemaTree.java
@@ -47,17 +47,17 @@ import static org.apache.iotdb.db.metadata.MetadataConstant.ALL_MATCH_PATTERN;
import static org.apache.iotdb.db.mpp.common.schematree.node.SchemaNode.SCHEMA_ENTITY_NODE;
import static org.apache.iotdb.db.mpp.common.schematree.node.SchemaNode.SCHEMA_MEASUREMENT_NODE;
-public class SchemaTree {
+public class ClusterSchemaTree implements ISchemaTree {
private List<String> storageGroups;
private final SchemaNode root;
- public SchemaTree() {
+ public ClusterSchemaTree() {
root = new SchemaInternalNode(PATH_ROOT);
}
- public SchemaTree(SchemaNode root) {
+ public ClusterSchemaTree(SchemaNode root) {
this.root = root;
}
@@ -68,6 +68,7 @@ public class SchemaTree {
* @param isPrefixMatch if true, the path pattern is used to match prefix path
* @return Left: all measurement paths; Right: remaining series offset
*/
+ @Override
public Pair<List<MeasurementPath>, Integer> searchMeasurementPaths(
PartialPath pathPattern, int slimit, int soffset, boolean isPrefixMatch) {
SchemaTreeMeasurementVisitor visitor =
@@ -75,6 +76,7 @@ public class SchemaTree {
return new Pair<>(visitor.getAllResult(), visitor.getNextOffset());
}
+ @Override
public Pair<List<MeasurementPath>, Integer> searchMeasurementPaths(PartialPath pathPattern) {
SchemaTreeMeasurementVisitor visitor =
new SchemaTreeMeasurementVisitor(
@@ -86,6 +88,7 @@ public class SchemaTree {
return new Pair<>(visitor.getAllResult(), visitor.getNextOffset());
}
+ @Override
public List<MeasurementPath> getAllMeasurement() {
return searchMeasurementPaths(ALL_MATCH_PATTERN, 0, 0, false).left;
}
@@ -96,16 +99,19 @@ public class SchemaTree {
* @param pathPattern the pattern of the target devices.
* @return A HashSet instance which stores info of the devices matching the given path pattern.
*/
+ @Override
public List<DeviceSchemaInfo> getMatchedDevices(PartialPath pathPattern, boolean isPrefixMatch) {
SchemaTreeDeviceVisitor visitor = new SchemaTreeDeviceVisitor(root, pathPattern, isPrefixMatch);
return visitor.getAllResult();
}
+ @Override
public List<DeviceSchemaInfo> getMatchedDevices(PartialPath pathPattern) {
SchemaTreeDeviceVisitor visitor = new SchemaTreeDeviceVisitor(root, pathPattern, false);
return visitor.getAllResult();
}
+ @Override
public DeviceSchemaInfo searchDeviceSchemaInfo(
PartialPath devicePath, List<String> measurements) {
@@ -182,7 +188,7 @@ public class SchemaTree {
}
}
- public void mergeSchemaTree(SchemaTree schemaTree) {
+ public void mergeSchemaTree(ClusterSchemaTree schemaTree) {
traverseAndMerge(this.root, null, schemaTree.root);
}
@@ -220,7 +226,7 @@ public class SchemaTree {
root.serialize(outputStream);
}
- public static SchemaTree deserialize(InputStream inputStream) throws IOException {
+ public static ClusterSchemaTree deserialize(InputStream inputStream) throws IOException {
byte nodeType;
int childNum;
@@ -257,7 +263,7 @@ public class SchemaTree {
stack.push(internalNode);
}
}
- return new SchemaTree(stack.poll());
+ return new ClusterSchemaTree(stack.poll());
}
/**
@@ -268,6 +274,7 @@ public class SchemaTree {
* @param pathName only full path, cannot be path pattern
* @return storage group in the given path
*/
+ @Override
public String getBelongedStorageGroup(String pathName) {
for (String storageGroup : storageGroups) {
if (PathUtils.isStartWith(pathName, storageGroup)) {
@@ -277,10 +284,12 @@ public class SchemaTree {
throw new RuntimeException("No matched storage group. Please check the path " + pathName);
}
+ @Override
public String getBelongedStorageGroup(PartialPath path) {
return getBelongedStorageGroup(path.getFullPath());
}
+ @Override
public List<String> getStorageGroups() {
return storageGroups;
}
@@ -294,6 +303,7 @@ public class SchemaTree {
return root;
}
+ @Override
public boolean isEmpty() {
return root.getChildren() == null || root.getChildren().size() == 0;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/ISchemaTree.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/ISchemaTree.java
new file mode 100644
index 0000000000..a19eb41639
--- /dev/null
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/ISchemaTree.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.mpp.common.schematree;
+
+import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.db.metadata.path.MeasurementPath;
+import org.apache.iotdb.tsfile.utils.Pair;
+
+import java.util.List;
+
+public interface ISchemaTree {
+ /**
+ * Return all measurement paths for given path pattern and filter the result by slimit and offset.
+ *
+ * @param pathPattern can be a pattern or a full path of timeseries.
+ * @param isPrefixMatch if true, the path pattern is used to match prefix path
+ * @return Left: all measurement paths; Right: remaining series offset
+ */
+ Pair<List<MeasurementPath>, Integer> searchMeasurementPaths(
+ PartialPath pathPattern, int slimit, int soffset, boolean isPrefixMatch);
+
+ Pair<List<MeasurementPath>, Integer> searchMeasurementPaths(PartialPath pathPattern);
+
+ List<MeasurementPath> getAllMeasurement();
+
+ /**
+ * Get all device matching the path pattern.
+ *
+ * @param pathPattern the pattern of the target devices.
+ * @return A HashSet instance which stores info of the devices matching the given path pattern.
+ */
+ List<DeviceSchemaInfo> getMatchedDevices(PartialPath pathPattern, boolean isPrefixMatch);
+
+ List<DeviceSchemaInfo> getMatchedDevices(PartialPath pathPattern);
+
+ DeviceSchemaInfo searchDeviceSchemaInfo(PartialPath devicePath, List<String> measurements);
+
+ /**
+ * Get storage group name by path
+ *
+ * <p>e.g., root.sg1 is a storage group and path = root.sg1.d1, return root.sg1
+ *
+ * @param pathName only full path, cannot be path pattern
+ * @return storage group in the given path
+ */
+ String getBelongedStorageGroup(String pathName);
+
+ String getBelongedStorageGroup(PartialPath path);
+
+ List<String> getStorageGroups();
+
+ boolean isEmpty();
+}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaFetchScanOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaFetchScanOperator.java
index c44542fab5..e35ed7aba2 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaFetchScanOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaFetchScanOperator.java
@@ -23,8 +23,8 @@ import org.apache.iotdb.commons.exception.MetadataException;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.metadata.schemaregion.ISchemaRegion;
import org.apache.iotdb.db.metadata.template.Template;
+import org.apache.iotdb.db.mpp.common.schematree.ClusterSchemaTree;
import org.apache.iotdb.db.mpp.common.schematree.PathPatternTree;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
import org.apache.iotdb.db.mpp.execution.operator.source.SourceOperator;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
@@ -107,7 +107,7 @@ public class SchemaFetchScanOperator implements SourceOperator {
}
private void fetchSchema() throws MetadataException {
- SchemaTree schemaTree = new SchemaTree();
+ ClusterSchemaTree schemaTree = new ClusterSchemaTree();
List<PartialPath> partialPathList = patternTree.getAllPathPatterns();
for (PartialPath path : partialPathList) {
schemaTree.appendMeasurementPaths(schemaRegion.fetchSchema(path, templateMap));
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analysis.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analysis.java
index d298d802ae..77799b4ad6 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analysis.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analysis.java
@@ -26,7 +26,7 @@ import org.apache.iotdb.commons.partition.SchemaPartition;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.metadata.template.Template;
import org.apache.iotdb.db.mpp.common.header.DatasetHeader;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
+import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.db.mpp.plan.expression.Expression;
import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.FillDescriptor;
import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.GroupByTimeParameter;
@@ -56,7 +56,7 @@ public class Analysis {
private SchemaPartition schemaPartition;
- private SchemaTree schemaTree;
+ private ISchemaTree schemaTree;
// map from output column name (for every node) to its datatype
private TypeProvider typeProvider;
@@ -188,11 +188,11 @@ public class Analysis {
this.schemaPartition = schemaPartition;
}
- public SchemaTree getSchemaTree() {
+ public ISchemaTree getSchemaTree() {
return schemaTree;
}
- public void setSchemaTree(SchemaTree schemaTree) {
+ public void setSchemaTree(ISchemaTree schemaTree) {
this.schemaTree = schemaTree;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
index 48abd130d9..bd7d2176ac 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
@@ -36,8 +36,8 @@ import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
import org.apache.iotdb.db.mpp.common.header.DatasetHeader;
import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
import org.apache.iotdb.db.mpp.common.schematree.DeviceSchemaInfo;
+import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.db.mpp.common.schematree.PathPatternTree;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
import org.apache.iotdb.db.mpp.plan.expression.Expression;
import org.apache.iotdb.db.mpp.plan.expression.ExpressionType;
import org.apache.iotdb.db.mpp.plan.expression.leaf.TimeSeriesOperand;
@@ -64,7 +64,6 @@ import org.apache.iotdb.db.mpp.plan.statement.crud.InsertStatement;
import org.apache.iotdb.db.mpp.plan.statement.crud.InsertTabletStatement;
import org.apache.iotdb.db.mpp.plan.statement.crud.QueryStatement;
import org.apache.iotdb.db.mpp.plan.statement.internal.InternalCreateTimeSeriesStatement;
-import org.apache.iotdb.db.mpp.plan.statement.internal.LastPointFetchStatement;
import org.apache.iotdb.db.mpp.plan.statement.internal.SchemaFetchStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.AlterTimeSeriesStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.CountDevicesStatement;
@@ -174,7 +173,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
// request schema fetch API
logger.info("{} fetch query schema...", getLogHeader());
- SchemaTree schemaTree = schemaFetcher.fetchSchema(patternTree);
+ ISchemaTree schemaTree = schemaFetcher.fetchSchema(patternTree);
logger.info("{} fetch schema done", getLogHeader());
// If there is no leaf node in the schema tree, the query should be completed immediately
if (schemaTree.isEmpty()) {
@@ -425,7 +424,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
}
private List<Pair<Expression, String>> analyzeSelect(
- QueryStatement queryStatement, SchemaTree schemaTree) {
+ QueryStatement queryStatement, ISchemaTree schemaTree) {
List<Pair<Expression, String>> outputExpressions = new ArrayList<>();
boolean isGroupByLevel = queryStatement.isGroupByLevel();
ColumnPaginationController paginationController =
@@ -480,7 +479,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
return outputExpressions;
}
- private Set<PartialPath> analyzeFrom(QueryStatement queryStatement, SchemaTree schemaTree) {
+ private Set<PartialPath> analyzeFrom(QueryStatement queryStatement, ISchemaTree schemaTree) {
// device path patterns in FROM clause
List<PartialPath> devicePatternList = queryStatement.getFromComponent().getPrefixPaths();
@@ -497,7 +496,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
private List<Pair<Expression, String>> analyzeSelect(
QueryStatement queryStatement,
- SchemaTree schemaTree,
+ ISchemaTree schemaTree,
Set<PartialPath> deviceList,
Map<String, Set<Expression>> deviceToTransformExpressions,
Map<String, Set<String>> deviceToMeasurementsMap) {
@@ -649,7 +648,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
return isHasRawDataInputAggregation;
}
- private Expression analyzeWhere(QueryStatement queryStatement, SchemaTree schemaTree) {
+ private Expression analyzeWhere(QueryStatement queryStatement, ISchemaTree schemaTree) {
List<Expression> rewrittenPredicates =
ExpressionAnalyzer.removeWildcardInQueryFilter(
queryStatement.getWhereCondition().getPredicate(),
@@ -661,7 +660,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
}
private Expression analyzeWhereSplitByDevice(
- QueryStatement queryStatement, PartialPath devicePath, SchemaTree schemaTree) {
+ QueryStatement queryStatement, PartialPath devicePath, ISchemaTree schemaTree) {
List<Expression> rewrittenPredicates =
ExpressionAnalyzer.removeWildcardInQueryFilterByDevice(
queryStatement.getWhereCondition().getPredicate(),
@@ -776,7 +775,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
}
private Analysis analyzeLast(
- Analysis analysis, List<MeasurementPath> allSelectedPath, SchemaTree schemaTree) {
+ Analysis analysis, List<MeasurementPath> allSelectedPath, ISchemaTree schemaTree) {
Set<Expression> sourceExpressions;
List<SortItem> sortItemList = analysis.getMergeOrderParameter().getSortItemList();
if (sortItemList.size() > 0) {
@@ -825,7 +824,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
return analysis;
}
- private DataPartition fetchDataPartitionByDevices(Set<String> deviceSet, SchemaTree schemaTree) {
+ private DataPartition fetchDataPartitionByDevices(Set<String> deviceSet, ISchemaTree schemaTree) {
Map<String, List<DataPartitionQueryParam>> sgNameToQueryParamsMap = new HashMap<>();
for (String devicePath : deviceSet) {
DataPartitionQueryParam queryParam = new DataPartitionQueryParam();
@@ -857,20 +856,6 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
}
}
- @Override
- public Analysis visitLastPointFetch(LastPointFetchStatement statement, MPPQueryContext context) {
- context.setQueryType(QueryType.READ);
-
- Analysis analysis = new Analysis();
- analysis.setStatement(statement);
-
- SchemaTree schemaTree = new SchemaTree();
- schemaTree.setStorageGroups(statement.getStorageGroups());
-
- analysis.setMergeOrderParameter(new OrderByParameter());
- return analyzeLast(analysis, statement.getSelectedPaths(), schemaTree);
- }
-
@Override
public Analysis visitInsert(InsertStatement insertStatement, MPPQueryContext context) {
context.setQueryType(QueryType.WRITE);
@@ -1219,7 +1204,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
patternTree.constructTree();
// request schema fetch API
logger.info("{} fetch query schema...", getLogHeader());
- SchemaTree schemaTree = schemaFetcher.fetchSchema(patternTree);
+ ISchemaTree schemaTree = schemaFetcher.fetchSchema(patternTree);
logger.info("{} fetch schema done", getLogHeader());
List<MeasurementPath> allSelectedPath = schemaTree.getAllMeasurement();
@@ -1452,7 +1437,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
patternTree.appendPathPattern(pathPattern);
}
- SchemaTree schemaTree = schemaFetcher.fetchSchema(patternTree);
+ ISchemaTree schemaTree = schemaFetcher.fetchSchema(patternTree);
analysis.setSchemaTree(schemaTree);
Map<String, List<DataPartitionQueryParam>> sgNameToQueryParamsMap = new HashMap<>();
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ClusterSchemaFetcher.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ClusterSchemaFetcher.java
index 7537998fea..c3e97ec043 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ClusterSchemaFetcher.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ClusterSchemaFetcher.java
@@ -30,9 +30,10 @@ import org.apache.iotdb.db.metadata.path.PathDeserializeUtil;
import org.apache.iotdb.db.metadata.template.ClusterTemplateManager;
import org.apache.iotdb.db.metadata.template.ITemplateManager;
import org.apache.iotdb.db.metadata.template.Template;
+import org.apache.iotdb.db.mpp.common.schematree.ClusterSchemaTree;
import org.apache.iotdb.db.mpp.common.schematree.DeviceSchemaInfo;
+import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.db.mpp.common.schematree.PathPatternTree;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
import org.apache.iotdb.db.mpp.plan.Coordinator;
import org.apache.iotdb.db.mpp.plan.execution.ExecutionResult;
import org.apache.iotdb.db.mpp.plan.statement.Statement;
@@ -92,7 +93,7 @@ public class ClusterSchemaFetcher implements ISchemaFetcher {
private ClusterSchemaFetcher() {}
@Override
- public SchemaTree fetchSchema(PathPatternTree patternTree) {
+ public ClusterSchemaTree fetchSchema(PathPatternTree patternTree) {
Map<Integer, Template> templateMap = new HashMap<>();
patternTree.constructTree();
for (PartialPath pattern : patternTree.getAllPathPatterns()) {
@@ -101,7 +102,7 @@ public class ClusterSchemaFetcher implements ISchemaFetcher {
return executeSchemaFetchQuery(new SchemaFetchStatement(patternTree, templateMap));
}
- private SchemaTree executeSchemaFetchQuery(SchemaFetchStatement schemaFetchStatement) {
+ private ClusterSchemaTree executeSchemaFetchQuery(SchemaFetchStatement schemaFetchStatement) {
long queryId = SessionManager.getInstance().requestQueryId(false);
try {
ExecutionResult executionResult =
@@ -121,7 +122,7 @@ public class ClusterSchemaFetcher implements ISchemaFetcher {
executionResult.status.getCode(), executionResult.status.getMessage()));
}
try (SetThreadName threadName = new SetThreadName(executionResult.queryId.getId())) {
- SchemaTree result = new SchemaTree();
+ ClusterSchemaTree result = new ClusterSchemaTree();
List<String> storageGroupList = new ArrayList<>();
while (coordinator.getQueryExecution(queryId).hasNextResult()) {
// The query will be transited to FINISHED when invoking getBatchResult() at the last time
@@ -149,7 +150,7 @@ public class ClusterSchemaFetcher implements ISchemaFetcher {
}
private void parseFetchedData(
- Binary data, SchemaTree resultSchemaTree, List<String> storageGroupList) {
+ Binary data, ClusterSchemaTree resultSchemaTree, List<String> storageGroupList) {
InputStream inputStream = new ByteArrayInputStream(data.getValues());
try {
byte type = ReadWriteIOUtils.readByte(inputStream);
@@ -159,7 +160,7 @@ public class ClusterSchemaFetcher implements ISchemaFetcher {
storageGroupList.add(ReadWriteIOUtils.readString(inputStream));
}
} else if (type == 1) {
- resultSchemaTree.mergeSchemaTree(SchemaTree.deserialize(inputStream));
+ resultSchemaTree.mergeSchemaTree(ClusterSchemaTree.deserialize(inputStream));
} else {
throw new RuntimeException(
new MetadataException("Failed to fetch schema because of unrecognized data"));
@@ -170,10 +171,10 @@ public class ClusterSchemaFetcher implements ISchemaFetcher {
}
@Override
- public SchemaTree fetchSchemaWithAutoCreate(
+ public ISchemaTree fetchSchemaWithAutoCreate(
PartialPath devicePath, String[] measurements, TSDataType[] tsDataTypes, boolean isAligned) {
- SchemaTree schemaTree = schemaCache.get(devicePath, measurements);
+ ClusterSchemaTree schemaTree = schemaCache.get(devicePath, measurements);
Pair<List<String>, List<TSDataType>> missingMeasurements =
checkMissingMeasurements(schemaTree, devicePath, measurements, tsDataTypes);
@@ -186,7 +187,7 @@ public class ClusterSchemaFetcher implements ISchemaFetcher {
return schemaTree;
}
- SchemaTree remoteSchemaTree = fetchSchema(patternTree);
+ ClusterSchemaTree remoteSchemaTree = fetchSchema(patternTree);
schemaTree.mergeSchemaTree(remoteSchemaTree);
schemaCache.put(remoteSchemaTree);
@@ -194,7 +195,7 @@ public class ClusterSchemaFetcher implements ISchemaFetcher {
return schemaTree;
}
- SchemaTree missingSchemaTree =
+ ClusterSchemaTree missingSchemaTree =
checkAndAutoCreateMissingMeasurements(
remoteSchemaTree,
devicePath,
@@ -209,13 +210,13 @@ public class ClusterSchemaFetcher implements ISchemaFetcher {
}
@Override
- public SchemaTree fetchSchemaListWithAutoCreate(
+ public ISchemaTree fetchSchemaListWithAutoCreate(
List<PartialPath> devicePathList,
List<String[]> measurementsList,
List<TSDataType[]> tsDataTypesList,
List<Boolean> isAlignedList) {
- SchemaTree schemaTree = new SchemaTree();
+ ClusterSchemaTree schemaTree = new ClusterSchemaTree();
PathPatternTree patternTree = new PathPatternTree();
for (int i = 0; i < devicePathList.size(); i++) {
schemaTree.mergeSchemaTree(schemaCache.get(devicePathList.get(i), measurementsList.get(i)));
@@ -235,7 +236,7 @@ public class ClusterSchemaFetcher implements ISchemaFetcher {
return schemaTree;
}
- SchemaTree remoteSchemaTree = fetchSchema(patternTree);
+ ClusterSchemaTree remoteSchemaTree = fetchSchema(patternTree);
schemaTree.mergeSchemaTree(remoteSchemaTree);
schemaCache.put(remoteSchemaTree);
@@ -243,7 +244,7 @@ public class ClusterSchemaFetcher implements ISchemaFetcher {
return schemaTree;
}
- SchemaTree missingSchemaTree;
+ ClusterSchemaTree missingSchemaTree;
for (int i = 0; i < devicePathList.size(); i++) {
missingSchemaTree =
checkAndAutoCreateMissingMeasurements(
@@ -273,8 +274,8 @@ public class ClusterSchemaFetcher implements ISchemaFetcher {
return templateManager.getAllPathsSetTemplate(templateName);
}
- private SchemaTree checkAndAutoCreateMissingMeasurements(
- SchemaTree schemaTree,
+ private ClusterSchemaTree checkAndAutoCreateMissingMeasurements(
+ ClusterSchemaTree schemaTree,
PartialPath devicePath,
String[] measurements,
TSDataType[] tsDataTypes,
@@ -286,7 +287,7 @@ public class ClusterSchemaFetcher implements ISchemaFetcher {
List<String> missingMeasurements = checkResult.left;
List<TSDataType> dataTypesOfMissingMeasurement = checkResult.right;
- SchemaTree reFetchedSchemaTree = new SchemaTree();
+ ClusterSchemaTree reFetchedSchemaTree = new ClusterSchemaTree();
if (missingMeasurements.isEmpty()) {
return reFetchedSchemaTree;
@@ -337,7 +338,7 @@ public class ClusterSchemaFetcher implements ISchemaFetcher {
}
private Pair<List<String>, List<TSDataType>> checkMissingMeasurements(
- SchemaTree schemaTree,
+ ISchemaTree schemaTree,
PartialPath devicePath,
String[] measurements,
TSDataType[] tsDataTypes) {
@@ -360,7 +361,7 @@ public class ClusterSchemaFetcher implements ISchemaFetcher {
return new Pair<>(missingMeasurements, dataTypesOfMissingMeasurement);
}
- private SchemaTree internalCreateTimeseries(
+ private ClusterSchemaTree internalCreateTimeseries(
PartialPath devicePath,
List<String> measurements,
List<TSDataType> tsDataTypes,
@@ -383,7 +384,7 @@ public class ClusterSchemaFetcher implements ISchemaFetcher {
.map(o -> measurements.indexOf(o.getMeasurement()))
.collect(Collectors.toSet());
- SchemaTree schemaTree = new SchemaTree();
+ ClusterSchemaTree schemaTree = new ClusterSchemaTree();
schemaTree.appendMeasurementPaths(measurementPathList);
for (int i = 0, size = measurements.size(); i < size; i++) {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionAnalyzer.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionAnalyzer.java
index b3ddc5d2c2..aa35eeff13 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionAnalyzer.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionAnalyzer.java
@@ -24,8 +24,8 @@ import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.exception.sql.MeasurementNotExistException;
import org.apache.iotdb.db.exception.sql.SemanticException;
import org.apache.iotdb.db.metadata.path.MeasurementPath;
+import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.db.mpp.common.schematree.PathPatternTree;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
import org.apache.iotdb.db.mpp.plan.expression.Expression;
import org.apache.iotdb.db.mpp.plan.expression.ExpressionType;
import org.apache.iotdb.db.mpp.plan.expression.binary.BinaryExpression;
@@ -332,7 +332,7 @@ public class ExpressionAnalyzer {
* @return the expression list after binding schema
*/
public static List<Expression> removeWildcardInExpression(
- Expression expression, SchemaTree schemaTree) {
+ Expression expression, ISchemaTree schemaTree) {
if (expression instanceof TernaryExpression) {
List<Expression> firstExpressions =
removeWildcardInExpression(
@@ -406,7 +406,7 @@ public class ExpressionAnalyzer {
public static List<Expression> removeWildcardInQueryFilter(
Expression predicate,
List<PartialPath> prefixPaths,
- SchemaTree schemaTree,
+ ISchemaTree schemaTree,
TypeProvider typeProvider) {
if (predicate instanceof TernaryExpression) {
List<Expression> firstExpressions =
@@ -509,7 +509,7 @@ public class ExpressionAnalyzer {
public static List<Expression> concatDeviceAndRemoveWildcard(
Expression expression,
PartialPath devicePath,
- SchemaTree schemaTree,
+ ISchemaTree schemaTree,
TypeProvider typeProvider) {
if (expression instanceof TernaryExpression) {
List<Expression> firstExpressions =
@@ -595,7 +595,7 @@ public class ExpressionAnalyzer {
public static List<Expression> removeWildcardInQueryFilterByDevice(
Expression predicate,
PartialPath devicePath,
- SchemaTree schemaTree,
+ ISchemaTree schemaTree,
TypeProvider typeProvider) {
if (predicate instanceof TernaryExpression) {
List<Expression> firstExpressions =
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/FakeSchemaFetcherImpl.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/FakeSchemaFetcherImpl.java
index 7426bffd96..af877f02d1 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/FakeSchemaFetcherImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/FakeSchemaFetcherImpl.java
@@ -21,8 +21,9 @@ package org.apache.iotdb.db.mpp.plan.analyze;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.metadata.template.Template;
+import org.apache.iotdb.db.mpp.common.schematree.ClusterSchemaTree;
+import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.db.mpp.common.schematree.PathPatternTree;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
import org.apache.iotdb.db.mpp.common.schematree.node.SchemaEntityNode;
import org.apache.iotdb.db.mpp.common.schematree.node.SchemaInternalNode;
import org.apache.iotdb.db.mpp.common.schematree.node.SchemaMeasurementNode;
@@ -37,16 +38,16 @@ import java.util.Map;
public class FakeSchemaFetcherImpl implements ISchemaFetcher {
- private final SchemaTree schemaTree = new SchemaTree(generateSchemaTree());
+ private final ClusterSchemaTree schemaTree = new ClusterSchemaTree(generateSchemaTree());
@Override
- public SchemaTree fetchSchema(PathPatternTree patternTree) {
+ public ClusterSchemaTree fetchSchema(PathPatternTree patternTree) {
schemaTree.setStorageGroups(Collections.singletonList("root.sg"));
return schemaTree;
}
@Override
- public SchemaTree fetchSchemaWithAutoCreate(
+ public ISchemaTree fetchSchemaWithAutoCreate(
PartialPath devicePath, String[] measurements, TSDataType[] tsDataTypes, boolean aligned) {
return schemaTree;
}
@@ -98,7 +99,7 @@ public class FakeSchemaFetcherImpl implements ISchemaFetcher {
}
@Override
- public SchemaTree fetchSchemaListWithAutoCreate(
+ public ISchemaTree fetchSchemaListWithAutoCreate(
List<PartialPath> devicePath,
List<String[]> measurements,
List<TSDataType[]> tsDataTypes,
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ISchemaFetcher.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ISchemaFetcher.java
index c56c753177..331acd60eb 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ISchemaFetcher.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ISchemaFetcher.java
@@ -21,8 +21,8 @@ package org.apache.iotdb.db.mpp.plan.analyze;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.metadata.template.Template;
+import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.db.mpp.common.schematree.PathPatternTree;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.utils.Pair;
@@ -34,12 +34,12 @@ import java.util.Map;
*/
public interface ISchemaFetcher {
- SchemaTree fetchSchema(PathPatternTree patternTree);
+ ISchemaTree fetchSchema(PathPatternTree patternTree);
- SchemaTree fetchSchemaWithAutoCreate(
+ ISchemaTree fetchSchemaWithAutoCreate(
PartialPath devicePath, String[] measurements, TSDataType[] tsDataTypes, boolean aligned);
- SchemaTree fetchSchemaListWithAutoCreate(
+ ISchemaTree fetchSchemaListWithAutoCreate(
List<PartialPath> devicePath,
List<String[]> measurements,
List<TSDataType[]> tsDataTypes,
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/SchemaValidator.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/SchemaValidator.java
index 732f80f69c..686a241f2b 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/SchemaValidator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/SchemaValidator.java
@@ -21,7 +21,7 @@ package org.apache.iotdb.db.mpp.plan.analyze;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.exception.sql.SemanticException;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
+import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.BatchInsertNode;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.InsertNode;
@@ -32,9 +32,9 @@ public class SchemaValidator {
? ClusterSchemaFetcher.getInstance()
: StandaloneSchemaFetcher.getInstance();
- public static SchemaTree validate(InsertNode insertNode) {
+ public static ISchemaTree validate(InsertNode insertNode) {
- SchemaTree schemaTree;
+ ISchemaTree schemaTree;
if (insertNode instanceof BatchInsertNode) {
BatchInsertNode batchInsertNode = (BatchInsertNode) insertNode;
schemaTree =
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/StandaloneSchemaFetcher.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/StandaloneSchemaFetcher.java
index 587d331e00..86a30c1f3e 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/StandaloneSchemaFetcher.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/StandaloneSchemaFetcher.java
@@ -27,9 +27,10 @@ import org.apache.iotdb.db.localconfignode.LocalConfigNode;
import org.apache.iotdb.db.metadata.schemaregion.ISchemaRegion;
import org.apache.iotdb.db.metadata.schemaregion.SchemaEngine;
import org.apache.iotdb.db.metadata.template.Template;
+import org.apache.iotdb.db.mpp.common.schematree.ClusterSchemaTree;
import org.apache.iotdb.db.mpp.common.schematree.DeviceSchemaInfo;
+import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.db.mpp.common.schematree.PathPatternTree;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
import org.apache.iotdb.db.qp.physical.sys.CreateAlignedTimeSeriesPlan;
import org.apache.iotdb.db.qp.physical.sys.CreateTimeSeriesPlan;
import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
@@ -61,10 +62,10 @@ public class StandaloneSchemaFetcher implements ISchemaFetcher {
}
@Override
- public SchemaTree fetchSchema(PathPatternTree patternTree) {
+ public ClusterSchemaTree fetchSchema(PathPatternTree patternTree) {
patternTree.constructTree();
Set<String> storageGroupSet = new HashSet<>();
- SchemaTree schemaTree = new SchemaTree();
+ ClusterSchemaTree schemaTree = new ClusterSchemaTree();
List<PartialPath> pathPatterns = patternTree.getAllPathPatterns();
try {
for (PartialPath pathPattern : pathPatterns) {
@@ -85,9 +86,9 @@ public class StandaloneSchemaFetcher implements ISchemaFetcher {
}
@Override
- public SchemaTree fetchSchemaWithAutoCreate(
+ public ISchemaTree fetchSchemaWithAutoCreate(
PartialPath devicePath, String[] measurements, TSDataType[] tsDataTypes, boolean aligned) {
- SchemaTree schemaTree = new SchemaTree();
+ ClusterSchemaTree schemaTree = new ClusterSchemaTree();
PathPatternTree patternTree = new PathPatternTree();
for (String measurement : measurements) {
@@ -98,7 +99,7 @@ public class StandaloneSchemaFetcher implements ISchemaFetcher {
return schemaTree;
}
- SchemaTree fetchedSchemaTree;
+ ClusterSchemaTree fetchedSchemaTree;
if (!config.isAutoCreateSchemaEnabled()) {
fetchedSchemaTree = fetchSchema(patternTree);
@@ -109,7 +110,7 @@ public class StandaloneSchemaFetcher implements ISchemaFetcher {
fetchedSchemaTree = fetchSchema(patternTree);
schemaTree.mergeSchemaTree(fetchedSchemaTree);
- SchemaTree missingSchemaTree =
+ ClusterSchemaTree missingSchemaTree =
checkAndAutoCreateMissingMeasurements(
fetchedSchemaTree, devicePath, measurements, tsDataTypes, aligned);
@@ -119,12 +120,12 @@ public class StandaloneSchemaFetcher implements ISchemaFetcher {
}
@Override
- public SchemaTree fetchSchemaListWithAutoCreate(
+ public ISchemaTree fetchSchemaListWithAutoCreate(
List<PartialPath> devicePathList,
List<String[]> measurementsList,
List<TSDataType[]> tsDataTypesList,
List<Boolean> isAlignedList) {
- SchemaTree schemaTree = new SchemaTree();
+ ClusterSchemaTree schemaTree = new ClusterSchemaTree();
PathPatternTree patternTree = new PathPatternTree();
for (int i = 0; i < devicePathList.size(); i++) {
for (String measurement : measurementsList.get(i)) {
@@ -136,7 +137,7 @@ public class StandaloneSchemaFetcher implements ISchemaFetcher {
return schemaTree;
}
- SchemaTree fetchedSchemaTree;
+ ClusterSchemaTree fetchedSchemaTree;
if (!config.isAutoCreateSchemaEnabled()) {
fetchedSchemaTree = fetchSchema(patternTree);
@@ -147,7 +148,7 @@ public class StandaloneSchemaFetcher implements ISchemaFetcher {
fetchedSchemaTree = fetchSchema(patternTree);
schemaTree.mergeSchemaTree(fetchedSchemaTree);
- SchemaTree missingSchemaTree;
+ ClusterSchemaTree missingSchemaTree;
for (int i = 0; i < devicePathList.size(); i++) {
missingSchemaTree =
checkAndAutoCreateMissingMeasurements(
@@ -180,7 +181,7 @@ public class StandaloneSchemaFetcher implements ISchemaFetcher {
public void invalidAllCache() {}
private Pair<List<String>, List<TSDataType>> checkMissingMeasurements(
- SchemaTree schemaTree,
+ ISchemaTree schemaTree,
PartialPath devicePath,
String[] measurements,
TSDataType[] tsDataTypes) {
@@ -203,8 +204,8 @@ public class StandaloneSchemaFetcher implements ISchemaFetcher {
return new Pair<>(missingMeasurements, dataTypesOfMissingMeasurement);
}
- private SchemaTree checkAndAutoCreateMissingMeasurements(
- SchemaTree schemaTree,
+ private ClusterSchemaTree checkAndAutoCreateMissingMeasurements(
+ ISchemaTree schemaTree,
PartialPath devicePath,
String[] measurements,
TSDataType[] tsDataTypes,
@@ -217,7 +218,7 @@ public class StandaloneSchemaFetcher implements ISchemaFetcher {
List<TSDataType> dataTypesOfMissingMeasurement = checkResult.right;
if (missingMeasurements.isEmpty()) {
- return new SchemaTree();
+ return new ClusterSchemaTree();
}
internalCreateTimeseries(
@@ -227,7 +228,7 @@ public class StandaloneSchemaFetcher implements ISchemaFetcher {
for (String measurement : missingMeasurements) {
patternTree.appendFullPath(devicePath, measurement);
}
- SchemaTree reFetchSchemaTree = fetchSchema(patternTree);
+ ClusterSchemaTree reFetchSchemaTree = fetchSchema(patternTree);
Pair<List<String>, List<TSDataType>> recheckResult =
checkMissingMeasurements(
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanVisitor.java
index 0c9922a0f5..ad5cbbe1be 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanVisitor.java
@@ -48,7 +48,6 @@ import org.apache.iotdb.db.mpp.plan.statement.crud.InsertRowsStatement;
import org.apache.iotdb.db.mpp.plan.statement.crud.InsertTabletStatement;
import org.apache.iotdb.db.mpp.plan.statement.crud.QueryStatement;
import org.apache.iotdb.db.mpp.plan.statement.internal.InternalCreateTimeSeriesStatement;
-import org.apache.iotdb.db.mpp.plan.statement.internal.LastPointFetchStatement;
import org.apache.iotdb.db.mpp.plan.statement.internal.SchemaFetchStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.AlterTimeSeriesStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.CountDevicesStatement;
@@ -308,14 +307,6 @@ public class LogicalPlanVisitor extends StatementVisitor<PlanNode, MPPQueryConte
return planBuilder.getRoot();
}
- public PlanNode visitLastPointFetch(
- LastPointFetchStatement lastPointFetchStatement, MPPQueryContext context) {
- LogicalPlanBuilder planBuilder = new LogicalPlanBuilder(context);
- return planBuilder
- .planLast(analysis.getSourceExpressions(), null, new OrderByParameter())
- .getRoot();
- }
-
@Override
public PlanNode visitCreateTimeseries(
CreateTimeSeriesStatement createTimeSeriesStatement, MPPQueryContext context) {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/DeleteDataNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/DeleteDataNode.java
index ccc1bbd366..13e6294df3 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/DeleteDataNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/DeleteDataNode.java
@@ -24,7 +24,7 @@ import org.apache.iotdb.commons.partition.DataPartition;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.metadata.path.PathDeserializeUtil;
import org.apache.iotdb.db.mpp.common.schematree.DeviceSchemaInfo;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
+import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.db.mpp.plan.analyze.Analysis;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
@@ -168,7 +168,7 @@ public class DeleteDataNode extends WritePlanNode {
@Override
public List<WritePlanNode> splitByPartition(Analysis analysis) {
- SchemaTree schemaTree = analysis.getSchemaTree();
+ ISchemaTree schemaTree = analysis.getSchemaTree();
DataPartition dataPartition = analysis.getDataPartitionInfo();
Map<TRegionReplicaSet, List<PartialPath>> regionToPatternMap = new HashMap<>();
@@ -193,7 +193,7 @@ public class DeleteDataNode extends WritePlanNode {
private void splitPathPatternByDevice(
PartialPath devicePattern,
PartialPath pathPattern,
- SchemaTree schemaTree,
+ ISchemaTree schemaTree,
DataPartition dataPartition,
Map<TRegionReplicaSet, List<PartialPath>> regionToPatternMap) {
for (DeviceSchemaInfo deviceSchemaInfo : schemaTree.getMatchedDevices(devicePattern)) {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertMultiTabletsNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertMultiTabletsNode.java
index 6085a55d8f..e20ab334be 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertMultiTabletsNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertMultiTabletsNode.java
@@ -22,7 +22,7 @@ import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.commons.utils.StatusUtils;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
+import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.db.mpp.plan.analyze.Analysis;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
@@ -136,7 +136,7 @@ public class InsertMultiTabletsNode extends InsertNode implements BatchInsertNod
}
@Override
- public boolean validateAndSetSchema(SchemaTree schemaTree) {
+ public boolean validateAndSetSchema(ISchemaTree schemaTree) {
for (InsertTabletNode insertTabletNode : insertTabletNodeList) {
if (!insertTabletNode.validateAndSetSchema(schemaTree)) {
return false;
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertNode.java
index f5b5bddb52..d9808da701 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertNode.java
@@ -24,7 +24,7 @@ import org.apache.iotdb.consensus.multileader.wal.ConsensusReqReader;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.exception.metadata.DataTypeMismatchException;
import org.apache.iotdb.db.metadata.idtable.entry.IDeviceID;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
+import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.WritePlanNode;
import org.apache.iotdb.db.wal.buffer.IWALByteBufferView;
@@ -216,7 +216,7 @@ public abstract class InsertNode extends WritePlanNode {
return dataRegionReplicaSet;
}
- public abstract boolean validateAndSetSchema(SchemaTree schemaTree);
+ public abstract boolean validateAndSetSchema(ISchemaTree schemaTree);
/** Check whether data types are matched with measurement schemas */
protected boolean selfCheckDataTypes() {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowNode.java
index 883fcc30c9..a7f012c484 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowNode.java
@@ -28,7 +28,7 @@ import org.apache.iotdb.db.engine.StorageEngineV2;
import org.apache.iotdb.db.exception.metadata.PathNotExistException;
import org.apache.iotdb.db.exception.query.QueryProcessException;
import org.apache.iotdb.db.mpp.common.schematree.DeviceSchemaInfo;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
+import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.db.mpp.plan.analyze.Analysis;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
@@ -169,7 +169,7 @@ public class InsertRowNode extends InsertNode implements WALEntryValue {
}
@Override
- public boolean validateAndSetSchema(SchemaTree schemaTree) {
+ public boolean validateAndSetSchema(ISchemaTree schemaTree) {
DeviceSchemaInfo deviceSchemaInfo =
schemaTree.searchDeviceSchemaInfo(devicePath, Arrays.asList(measurements));
if (deviceSchemaInfo.isAligned() != isAligned) {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowsNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowsNode.java
index a81d7198e1..89c6b6df13 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowsNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowsNode.java
@@ -23,7 +23,7 @@ import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.commons.utils.StatusUtils;
import org.apache.iotdb.db.engine.StorageEngineV2;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
+import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.db.mpp.plan.analyze.Analysis;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
@@ -120,7 +120,7 @@ public class InsertRowsNode extends InsertNode implements BatchInsertNode {
public void addChild(PlanNode child) {}
@Override
- public boolean validateAndSetSchema(SchemaTree schemaTree) {
+ public boolean validateAndSetSchema(ISchemaTree schemaTree) {
for (InsertRowNode insertRowNode : insertRowNodeList) {
if (!insertRowNode.validateAndSetSchema(schemaTree)) {
return false;
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowsOfOneDeviceNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowsOfOneDeviceNode.java
index 5f9772f699..7435dbbad4 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowsOfOneDeviceNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowsOfOneDeviceNode.java
@@ -24,7 +24,7 @@ import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.commons.utils.StatusUtils;
import org.apache.iotdb.db.engine.StorageEngineV2;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
+import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.db.mpp.plan.analyze.Analysis;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
@@ -143,7 +143,7 @@ public class InsertRowsOfOneDeviceNode extends InsertNode implements BatchInsert
}
@Override
- public boolean validateAndSetSchema(SchemaTree schemaTree) {
+ public boolean validateAndSetSchema(ISchemaTree schemaTree) {
for (InsertRowNode insertRowNode : insertRowNodeList) {
if (!insertRowNode.validateAndSetSchema(schemaTree)) {
return false;
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertTabletNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertTabletNode.java
index a9e64c9db9..250ad58015 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertTabletNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertTabletNode.java
@@ -25,7 +25,7 @@ import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.commons.utils.TestOnly;
import org.apache.iotdb.db.engine.StorageEngineV2;
import org.apache.iotdb.db.mpp.common.schematree.DeviceSchemaInfo;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
+import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.db.mpp.plan.analyze.Analysis;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
@@ -166,7 +166,7 @@ public class InsertTabletNode extends InsertNode implements WALEntryValue {
}
@Override
- public boolean validateAndSetSchema(SchemaTree schemaTree) {
+ public boolean validateAndSetSchema(ISchemaTree schemaTree) {
DeviceSchemaInfo deviceSchemaInfo =
schemaTree.searchDeviceSchemaInfo(devicePath, Arrays.asList(measurements));
if (deviceSchemaInfo.isAligned() != isAligned) {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
index d20b0a4ecb..918881984e 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
@@ -28,7 +28,6 @@ import org.apache.iotdb.db.mpp.plan.statement.crud.InsertStatement;
import org.apache.iotdb.db.mpp.plan.statement.crud.InsertTabletStatement;
import org.apache.iotdb.db.mpp.plan.statement.crud.QueryStatement;
import org.apache.iotdb.db.mpp.plan.statement.internal.InternalCreateTimeSeriesStatement;
-import org.apache.iotdb.db.mpp.plan.statement.internal.LastPointFetchStatement;
import org.apache.iotdb.db.mpp.plan.statement.internal.SchemaFetchStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.AlterTimeSeriesStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.CountDevicesStatement;
@@ -170,10 +169,6 @@ public abstract class StatementVisitor<R, C> {
return visitStatement(queryStatement, context);
}
- public R visitLastPointFetch(LastPointFetchStatement lastPointFetchStatement, C context) {
- return visitStatement(lastPointFetchStatement, context);
- }
-
// Insert Statement
public R visitInsert(InsertStatement insertStatement, C context) {
return visitStatement(insertStatement, context);
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/LastPointFetchStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/LastPointFetchStatement.java
deleted file mode 100644
index 58347a68e4..0000000000
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/LastPointFetchStatement.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.iotdb.db.mpp.plan.statement.internal;
-
-import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.metadata.path.MeasurementPath;
-import org.apache.iotdb.db.mpp.plan.statement.Statement;
-import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
-
-import java.util.List;
-
-public class LastPointFetchStatement extends Statement {
-
- private final List<MeasurementPath> selectedPaths;
-
- // used for fetch data partition
- private final List<String> storageGroups;
-
- public LastPointFetchStatement(List<MeasurementPath> selectedPaths, List<String> storageGroups) {
- this.selectedPaths = selectedPaths;
- this.storageGroups = storageGroups;
- }
-
- public List<MeasurementPath> getSelectedPaths() {
- return selectedPaths;
- }
-
- public List<String> getStorageGroups() {
- return storageGroups;
- }
-
- @Override
- public List<? extends PartialPath> getPaths() {
- return selectedPaths;
- }
-
- @Override
- public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
- return visitor.visitLastPointFetch(this, context);
- }
-}
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/cache/DataNodeSchemaCacheTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/cache/DataNodeSchemaCacheTest.java
index 0d72f84d99..2ed740eb2e 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/cache/DataNodeSchemaCacheTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/cache/DataNodeSchemaCacheTest.java
@@ -21,7 +21,8 @@ package org.apache.iotdb.db.metadata.cache;
import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
+import org.apache.iotdb.db.mpp.common.schematree.ClusterSchemaTree;
+import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.TimeValuePair;
import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
@@ -173,8 +174,8 @@ public class DataNodeSchemaCacheTest {
Assert.assertNull(dataNodeSchemaCache.getLastCache(seriesPath3));
}
- private SchemaTree generateSchemaTree1() throws IllegalPathException {
- SchemaTree schemaTree = new SchemaTree();
+ private ISchemaTree generateSchemaTree1() throws IllegalPathException {
+ ClusterSchemaTree schemaTree = new ClusterSchemaTree();
schemaTree.appendSingleMeasurement(
new PartialPath("root.sg1.d1.s1"),
@@ -195,8 +196,8 @@ public class DataNodeSchemaCacheTest {
return schemaTree;
}
- private SchemaTree generateSchemaTree2() throws IllegalPathException {
- SchemaTree schemaTree = new SchemaTree();
+ private ISchemaTree generateSchemaTree2() throws IllegalPathException {
+ ClusterSchemaTree schemaTree = new ClusterSchemaTree();
schemaTree.appendSingleMeasurement(
new PartialPath("root.sg1.d1.s3"),
diff --git a/server/src/test/java/org/apache/iotdb/db/mpp/common/schematree/SchemaTreeTest.java b/server/src/test/java/org/apache/iotdb/db/mpp/common/schematree/ClusterSchemaTreeTest.java
similarity index 95%
rename from server/src/test/java/org/apache/iotdb/db/mpp/common/schematree/SchemaTreeTest.java
rename to server/src/test/java/org/apache/iotdb/db/mpp/common/schematree/ClusterSchemaTreeTest.java
index d51deb19ec..7a6f3c0c93 100644
--- a/server/src/test/java/org/apache/iotdb/db/mpp/common/schematree/SchemaTreeTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/mpp/common/schematree/ClusterSchemaTreeTest.java
@@ -41,7 +41,7 @@ import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
-public class SchemaTreeTest {
+public class ClusterSchemaTreeTest {
@Test
public void testSchemaTreeVisitor() throws Exception {
@@ -392,12 +392,12 @@ public class SchemaTreeTest {
@Test
public void testSearchDeviceInfo() throws Exception {
- SchemaTree schemaTree = new SchemaTree(generateSchemaTree());
+ ISchemaTree schemaTree = new ClusterSchemaTree(generateSchemaTree());
testSearchDeviceInfo(schemaTree);
}
- private void testSearchDeviceInfo(SchemaTree schemaTree) throws Exception {
+ private void testSearchDeviceInfo(ISchemaTree schemaTree) throws Exception {
PartialPath devicePath = new PartialPath("root.sg.d1");
List<String> measurements = new ArrayList<>();
measurements.add("s1");
@@ -426,7 +426,7 @@ public class SchemaTreeTest {
@Test
public void testGetMatchedDevices() throws Exception {
- SchemaTree schemaTree = new SchemaTree(generateSchemaTree());
+ ISchemaTree schemaTree = new ClusterSchemaTree(generateSchemaTree());
List<DeviceSchemaInfo> deviceSchemaInfoList =
schemaTree.getMatchedDevices(new PartialPath("root.sg.d2.a"), false);
@@ -466,7 +466,7 @@ public class SchemaTreeTest {
root.serialize(outputStream);
ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
- SchemaTree schemaTree = SchemaTree.deserialize(inputStream);
+ ISchemaTree schemaTree = ClusterSchemaTree.deserialize(inputStream);
Pair<List<MeasurementPath>, Integer> visitResult =
schemaTree.searchMeasurementPaths(new PartialPath("root.sg.**.status"), 2, 1, true);
@@ -478,7 +478,7 @@ public class SchemaTreeTest {
@Test
public void testAppendMeasurementPath() throws Exception {
- SchemaTree schemaTree = new SchemaTree();
+ ClusterSchemaTree schemaTree = new ClusterSchemaTree();
List<MeasurementPath> measurementPathList = generateMeasurementPathList();
schemaTree.appendMeasurementPaths(measurementPathList);
@@ -530,8 +530,8 @@ public class SchemaTreeTest {
@Test
public void testMergeSchemaTree() throws Exception {
- SchemaTree schemaTree = new SchemaTree();
- for (SchemaTree tree : generateSchemaTrees()) {
+ ClusterSchemaTree schemaTree = new ClusterSchemaTree();
+ for (ClusterSchemaTree tree : generateSchemaTrees()) {
schemaTree.mergeSchemaTree(tree);
}
@@ -540,8 +540,8 @@ public class SchemaTreeTest {
@Test
public void testMergeSchemaTreeAndSearchDeviceSchemaInfo() throws Exception {
- SchemaTree schemaTree = new SchemaTree();
- for (SchemaTree tree : generateSchemaTrees()) {
+ ClusterSchemaTree schemaTree = new ClusterSchemaTree();
+ for (ClusterSchemaTree tree : generateSchemaTrees()) {
schemaTree.mergeSchemaTree(tree);
}
PartialPath devicePath = new PartialPath("root.sg.d99999");
@@ -551,9 +551,9 @@ public class SchemaTreeTest {
schemaTree.searchDeviceSchemaInfo(devicePath, measurements);
}
- private List<SchemaTree> generateSchemaTrees() throws Exception {
- List<SchemaTree> schemaTreeList = new ArrayList<>();
- SchemaTree schemaTree;
+ private List<ClusterSchemaTree> generateSchemaTrees() throws Exception {
+ List<ClusterSchemaTree> schemaTreeList = new ArrayList<>();
+ ClusterSchemaTree schemaTree;
List<MeasurementPath> measurementPathList = generateMeasurementPathList();
List<MeasurementPath> list;
for (int i = 0; i < 6; i += 2) {
@@ -561,7 +561,7 @@ public class SchemaTreeTest {
list.add(measurementPathList.get(i));
list.add(measurementPathList.get(i + 1));
- schemaTree = new SchemaTree();
+ schemaTree = new ClusterSchemaTree();
schemaTree.appendMeasurementPaths(list);
schemaTreeList.add(schemaTree);
}
diff --git a/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaFetchScanOperatorTest.java b/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaFetchScanOperatorTest.java
index 3814f8e32d..a99a4743b9 100644
--- a/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaFetchScanOperatorTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaFetchScanOperatorTest.java
@@ -24,9 +24,10 @@ import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.metadata.path.MeasurementPath;
import org.apache.iotdb.db.metadata.schemaregion.ISchemaRegion;
import org.apache.iotdb.db.metadata.schemaregion.SchemaEngine;
+import org.apache.iotdb.db.mpp.common.schematree.ClusterSchemaTree;
import org.apache.iotdb.db.mpp.common.schematree.DeviceSchemaInfo;
+import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.db.mpp.common.schematree.PathPatternTree;
-import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
import org.apache.iotdb.db.qp.physical.sys.CreateAlignedTimeSeriesPlan;
import org.apache.iotdb.db.qp.physical.sys.CreateTimeSeriesPlan;
import org.apache.iotdb.db.utils.EnvironmentUtils;
@@ -84,7 +85,7 @@ public class SchemaFetchScanOperatorTest {
Binary binary = tsBlock.getColumn(0).getBinary(0);
InputStream inputStream = new ByteArrayInputStream(binary.getValues());
Assert.assertEquals(1, ReadWriteIOUtils.readByte(inputStream));
- SchemaTree schemaTree = SchemaTree.deserialize(inputStream);
+ ISchemaTree schemaTree = ClusterSchemaTree.deserialize(inputStream);
DeviceSchemaInfo deviceSchemaInfo =
schemaTree.searchDeviceSchemaInfo(