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/12/22 11:16:59 UTC

[iotdb] 01/01: eliminate useless code in schemaRegion and MTree

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

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

commit 9771dc9be33b45defe32ca5318dcdaea6296ad89
Author: Marccos <15...@qq.com>
AuthorDate: Thu Dec 22 19:15:16 2022 +0800

    eliminate useless code in schemaRegion and MTree
---
 .../iotdb/db/metadata/mtree/IMTreeBelowSG.java     |  55 ------
 .../db/metadata/mtree/MTreeBelowSGCachedImpl.java  | 138 -------------
 .../db/metadata/mtree/MTreeBelowSGMemoryImpl.java  | 126 ------------
 .../schemaregion/SchemaRegionMemoryImpl.java       |  37 ----
 .../schemaregion/SchemaRegionSchemaFileImpl.java   |  57 ------
 .../iotdb/db/metadata/mtree/MTreeBelowSGTest.java  | 216 ++-------------------
 6 files changed, 21 insertions(+), 608 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/IMTreeBelowSG.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/IMTreeBelowSG.java
index e9a459fb5b..b81ffecd3a 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/IMTreeBelowSG.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/IMTreeBelowSG.java
@@ -22,7 +22,6 @@ import org.apache.iotdb.common.rpc.thrift.TSchemaNode;
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.MeasurementPath;
 import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.metadata.mnode.IEntityMNode;
 import org.apache.iotdb.db.metadata.mnode.IMNode;
 import org.apache.iotdb.db.metadata.mnode.IMeasurementMNode;
 import org.apache.iotdb.db.metadata.plan.schemaregion.read.IShowDevicesPlan;
@@ -130,15 +129,6 @@ public interface IMTreeBelowSG {
    */
   IMNode getDeviceNodeWithAutoCreating(PartialPath deviceId) throws MetadataException;
 
-  IEntityMNode setToEntity(IMNode node) throws MetadataException;
-
-  /**
-   * Check whether the given path exists.
-   *
-   * @param path a full path or a prefix path
-   */
-  boolean isPathExist(PartialPath path) throws MetadataException;
-
   /**
    * Get all devices matching the given path pattern. If isPrefixMatch, then the devices under the
    * paths matching given path pattern will be collected too.
@@ -150,8 +140,6 @@ public interface IMTreeBelowSG {
 
   Pair<List<ShowDevicesResult>, Integer> getDevices(IShowDevicesPlan plan) throws MetadataException;
 
-  Set<PartialPath> getDevicesByTimeseries(PartialPath timeseries) throws MetadataException;
-
   /**
    * Get all measurement paths matching the given path pattern. If using prefix match, the path
    * pattern is used to match prefix path. All timeseries start with the matched prefix path will be
@@ -163,13 +151,6 @@ public interface IMTreeBelowSG {
   List<MeasurementPath> getMeasurementPaths(PartialPath pathPattern, boolean isPrefixMatch)
       throws MetadataException;
 
-  /**
-   * Get all measurement paths matching the given path pattern
-   *
-   * @param pathPattern a path pattern or a full path, may contain wildcard.
-   */
-  List<MeasurementPath> getMeasurementPaths(PartialPath pathPattern) throws MetadataException;
-
   /**
    * Get all measurement paths matching the given path pattern If using prefix match, the path
    * pattern is used to match prefix path. All timeseries start with the matched prefix path will be
@@ -221,20 +202,6 @@ public interface IMTreeBelowSG {
    */
   Set<TSchemaNode> getChildNodePathInNextLevel(PartialPath pathPattern) throws MetadataException;
 
-  /**
-   * Get child node in the next level of the given path.
-   *
-   * <p>e.g., MTree has [root.sg1.d1.s1, root.sg1.d1.s2, root.sg1.d2.s1] given path = root.sg1,
-   * return [d1, d2]
-   *
-   * <p>e.g., MTree has [root.sg1.d1.s1, root.sg1.d1.s2, root.sg1.d2.s1] given path = root.sg1.d1
-   * return [s1, s2]
-   *
-   * @param pathPattern Path
-   * @return All child nodes' seriesPath(s) of given seriesPath.
-   */
-  Set<String> getChildNodeNameInNextLevel(PartialPath pathPattern) throws MetadataException;
-
   /** Get all paths from root to the given level */
   List<PartialPath> getNodesListInGivenLevel(
       PartialPath pathPattern, int nodeLevel, boolean isPrefixMatch) throws MetadataException;
@@ -259,13 +226,6 @@ public interface IMTreeBelowSG {
       PartialPath pathPattern, Map<Integer, Template> templateMap, boolean isPrefixMatch)
       throws MetadataException;
 
-  /**
-   * Get the count of timeseries matching the given path.
-   *
-   * @param pathPattern a path pattern or a full path, may contain wildcard
-   */
-  long getAllTimeseriesCount(PartialPath pathPattern) throws MetadataException;
-
   /**
    * Get the count of timeseries matching the given path by tag.
    *
@@ -284,21 +244,6 @@ public interface IMTreeBelowSG {
    */
   long getDevicesNum(PartialPath pathPattern, boolean isPrefixMatch) throws MetadataException;
 
-  /**
-   * Get the count of devices matching the given path.
-   *
-   * @param pathPattern a path pattern or a full path, may contain wildcard
-   */
-  long getDevicesNum(PartialPath pathPattern) throws MetadataException;
-
-  /**
-   * Get the count of nodes in the given level matching the given path. If using prefix match, the
-   * path pattern is used to match prefix path. All timeseries start with the matched prefix path
-   * will be counted.
-   */
-  long getNodesCountInGivenLevel(PartialPath pathPattern, int level, boolean isPrefixMatch)
-      throws MetadataException;
-
   Map<PartialPath, Long> getMeasurementCountGroupByLevel(
       PartialPath pathPattern, int level, boolean isPrefixMatch) throws MetadataException;
 
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGCachedImpl.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGCachedImpl.java
index aaf7c8310e..960f110232 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGCachedImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGCachedImpl.java
@@ -47,7 +47,6 @@ import org.apache.iotdb.db.metadata.mtree.traverser.collector.MNodeCollector;
 import org.apache.iotdb.db.metadata.mtree.traverser.collector.MeasurementCollector;
 import org.apache.iotdb.db.metadata.mtree.traverser.counter.CounterTraverser;
 import org.apache.iotdb.db.metadata.mtree.traverser.counter.EntityCounter;
-import org.apache.iotdb.db.metadata.mtree.traverser.counter.MNodeLevelCounter;
 import org.apache.iotdb.db.metadata.mtree.traverser.counter.MeasurementCounter;
 import org.apache.iotdb.db.metadata.mtree.traverser.counter.MeasurementGroupByLevelCounter;
 import org.apache.iotdb.db.metadata.plan.schemaregion.read.IShowDevicesPlan;
@@ -654,50 +653,9 @@ public class MTreeBelowSGCachedImpl implements IMTreeBelowSG {
       unPinPath(cur);
     }
   }
-
-  @Override
-  public IEntityMNode setToEntity(IMNode node) throws MetadataException {
-    // synchronize check and replace, we need replaceChild become atomic operation
-    // only write on mtree will be synchronized
-    synchronized (this) {
-      IEntityMNode entityMNode = store.setToEntity(node);
-      if (entityMNode.isStorageGroup()) {
-        this.storageGroupMNode = entityMNode.getAsStorageGroupMNode();
-      }
-      return entityMNode;
-    }
-  }
   // endregion
 
   // region Interfaces and Implementation for metadata info Query
-  /**
-   * Check whether the given path exists.
-   *
-   * @param path a full path or a prefix path
-   */
-  @Override
-  public boolean isPathExist(PartialPath path) throws MetadataException {
-    String[] nodeNames = path.getNodes();
-    IMNode cur = storageGroupMNode;
-    IMNode child;
-    try {
-      for (int i = levelOfSG + 1; i < nodeNames.length; i++) {
-        child = store.getChild(cur, nodeNames[i]);
-        if (child == null) {
-          return false;
-        } else {
-          if (child.isMeasurement()) {
-            cur = child;
-            return i == nodeNames.length - 1;
-          }
-        }
-        cur = child;
-      }
-      return true;
-    } finally {
-      unPinPath(cur);
-    }
-  }
 
   // region Interfaces for Device info Query
   /**
@@ -748,21 +706,6 @@ public class MTreeBelowSGCachedImpl implements IMTreeBelowSG {
 
     return new Pair<>(res, collector.getCurOffset() + 1);
   }
-
-  @Override
-  public Set<PartialPath> getDevicesByTimeseries(PartialPath timeseries) throws MetadataException {
-    Set<PartialPath> result = new HashSet<>();
-    MeasurementCollector<Set<PartialPath>> collector =
-        new MeasurementCollector<Set<PartialPath>>(storageGroupMNode, timeseries, store) {
-          @Override
-          protected void collectMeasurement(IMeasurementMNode node) {
-            result.add(getCurrentPartialPath(node).getDevicePath());
-          }
-        };
-    collector.traverse();
-    return result;
-  }
-
   // endregion
 
   // region Interfaces for timeseries, measurement and schema info Query
@@ -780,17 +723,6 @@ public class MTreeBelowSGCachedImpl implements IMTreeBelowSG {
     return getMeasurementPathsWithAlias(pathPattern, 0, 0, isPrefixMatch, false).left;
   }
 
-  /**
-   * Get all measurement paths matching the given path pattern
-   *
-   * @param pathPattern a path pattern or a full path, may contain wildcard.
-   */
-  @Override
-  public List<MeasurementPath> getMeasurementPaths(PartialPath pathPattern)
-      throws MetadataException {
-    return getMeasurementPaths(pathPattern, false);
-  }
-
   /**
    * Get all measurement paths matching the given path pattern If using prefix match, the path
    * pattern is used to match prefix path. All timeseries start with the matched prefix path will be
@@ -909,37 +841,6 @@ public class MTreeBelowSGCachedImpl implements IMTreeBelowSG {
     }
   }
 
-  /**
-   * Get child node in the next level of the given path.
-   *
-   * <p>e.g., MTree has [root.sg1.d1.s1, root.sg1.d1.s2, root.sg1.d2.s1] given path = root.sg1,
-   * return [d1, d2]
-   *
-   * <p>e.g., MTree has [root.sg1.d1.s1, root.sg1.d1.s2, root.sg1.d2.s1] given path = root.sg1.d1
-   * return [s1, s2]
-   *
-   * @param pathPattern Path
-   * @return All child nodes' seriesPath(s) of given seriesPath.
-   */
-  @Override
-  public Set<String> getChildNodeNameInNextLevel(PartialPath pathPattern) throws MetadataException {
-    try {
-      MNodeCollector<Set<String>> collector =
-          new MNodeCollector<Set<String>>(
-              storageGroupMNode, pathPattern.concatNode(ONE_LEVEL_PATH_WILDCARD), store) {
-            @Override
-            protected void transferToResult(IMNode node) {
-              resultSet.add(node.getName());
-            }
-          };
-      collector.setResultSet(new TreeSet<>());
-      collector.traverse();
-      return collector.getResult();
-    } catch (IllegalPathException e) {
-      throw new IllegalPathException(pathPattern.getFullPath());
-    }
-  }
-
   /** Get all paths from root to the given level */
   @Override
   public List<PartialPath> getNodesListInGivenLevel(
@@ -985,16 +886,6 @@ public class MTreeBelowSGCachedImpl implements IMTreeBelowSG {
     return counter.getCount();
   }
 
-  /**
-   * Get the count of timeseries matching the given path.
-   *
-   * @param pathPattern a path pattern or a full path, may contain wildcard
-   */
-  @Override
-  public long getAllTimeseriesCount(PartialPath pathPattern) throws MetadataException {
-    return getAllTimeseriesCount(pathPattern, false);
-  }
-
   @Override
   public long getAllTimeseriesCount(
       PartialPath pathPattern, boolean isPrefixMatch, List<String> timeseries, boolean hasTag)
@@ -1022,30 +913,6 @@ public class MTreeBelowSGCachedImpl implements IMTreeBelowSG {
     return counter.getCount();
   }
 
-  /**
-   * Get the count of devices matching the given path.
-   *
-   * @param pathPattern a path pattern or a full path, may contain wildcard
-   */
-  @Override
-  public long getDevicesNum(PartialPath pathPattern) throws MetadataException {
-    return getDevicesNum(pathPattern, false);
-  }
-
-  /**
-   * Get the count of nodes in the given level matching the given path. If using prefix match, the
-   * path pattern is used to match prefix path. All timeseries start with the matched prefix path
-   * will be counted.
-   */
-  @Override
-  public long getNodesCountInGivenLevel(PartialPath pathPattern, int level, boolean isPrefixMatch)
-      throws MetadataException {
-    MNodeLevelCounter counter = new MNodeLevelCounter(storageGroupMNode, pathPattern, store, level);
-    counter.setPrefixMatch(isPrefixMatch);
-    counter.traverse();
-    return counter.getCount();
-  }
-
   @Override
   public Map<PartialPath, Long> getMeasurementCountGroupByLevel(
       PartialPath pathPattern, int level, boolean isPrefixMatch) throws MetadataException {
@@ -1389,11 +1256,6 @@ public class MTreeBelowSGCachedImpl implements IMTreeBelowSG {
     store.updateMNode(node);
   }
 
-  public IMNode getChildFromPinnedMNode(IMNode parent, String measurement)
-      throws MetadataException {
-    return store.getChild(parent, measurement);
-  }
-
   // endregion
 
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGMemoryImpl.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGMemoryImpl.java
index e288ce1ac8..2bd6ecc68f 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGMemoryImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGMemoryImpl.java
@@ -47,7 +47,6 @@ import org.apache.iotdb.db.metadata.mtree.traverser.collector.MNodeCollector;
 import org.apache.iotdb.db.metadata.mtree.traverser.collector.MeasurementCollector;
 import org.apache.iotdb.db.metadata.mtree.traverser.counter.CounterTraverser;
 import org.apache.iotdb.db.metadata.mtree.traverser.counter.EntityCounter;
-import org.apache.iotdb.db.metadata.mtree.traverser.counter.MNodeLevelCounter;
 import org.apache.iotdb.db.metadata.mtree.traverser.counter.MeasurementCounter;
 import org.apache.iotdb.db.metadata.mtree.traverser.counter.MeasurementGroupByLevelCounter;
 import org.apache.iotdb.db.metadata.plan.schemaregion.read.IShowDevicesPlan;
@@ -572,43 +571,9 @@ public class MTreeBelowSGMemoryImpl implements IMTreeBelowSG {
     }
     return cur;
   }
-
-  @Override
-  public IEntityMNode setToEntity(IMNode node) throws MetadataException {
-    // synchronize check and replace, we need replaceChild become atomic operation
-    // only write on mtree will be synchronized
-    synchronized (this) {
-      IEntityMNode entityMNode = store.setToEntity(node);
-      if (entityMNode.isStorageGroup()) {
-        this.storageGroupMNode = entityMNode.getAsStorageGroupMNode();
-      }
-      return entityMNode;
-    }
-  }
   // endregion
 
   // region Interfaces and Implementation for metadata info Query
-  /**
-   * Check whether the given path exists.
-   *
-   * @param path a full path or a prefix path
-   */
-  @Override
-  public boolean isPathExist(PartialPath path) throws MetadataException {
-    String[] nodeNames = path.getNodes();
-    IMNode cur = storageGroupMNode;
-    IMNode child;
-    for (int i = levelOfSG + 1; i < nodeNames.length; i++) {
-      child = cur.getChild(nodeNames[i]);
-      if (child == null) {
-        return false;
-      } else if (child.isMeasurement()) {
-        return i == nodeNames.length - 1;
-      }
-      cur = child;
-    }
-    return true;
-  }
 
   // region Interfaces for Device info Query
   /**
@@ -659,21 +624,6 @@ public class MTreeBelowSGMemoryImpl implements IMTreeBelowSG {
 
     return new Pair<>(res, collector.getCurOffset() + 1);
   }
-
-  @Override
-  public Set<PartialPath> getDevicesByTimeseries(PartialPath timeseries) throws MetadataException {
-    Set<PartialPath> result = new HashSet<>();
-    MeasurementCollector<Set<PartialPath>> collector =
-        new MeasurementCollector<Set<PartialPath>>(storageGroupMNode, timeseries, store) {
-          @Override
-          protected void collectMeasurement(IMeasurementMNode node) {
-            result.add(getCurrentPartialPath(node).getDevicePath());
-          }
-        };
-    collector.traverse();
-    return result;
-  }
-
   // endregion
 
   // region Interfaces for timeseries, measurement and schema info Query
@@ -691,17 +641,6 @@ public class MTreeBelowSGMemoryImpl implements IMTreeBelowSG {
     return getMeasurementPathsWithAlias(pathPattern, 0, 0, isPrefixMatch, false).left;
   }
 
-  /**
-   * Get all measurement paths matching the given path pattern
-   *
-   * @param pathPattern a path pattern or a full path, may contain wildcard.
-   */
-  @Override
-  public List<MeasurementPath> getMeasurementPaths(PartialPath pathPattern)
-      throws MetadataException {
-    return getMeasurementPaths(pathPattern, false);
-  }
-
   /**
    * Get all measurement paths matching the given path pattern If using prefix match, the path
    * pattern is used to match prefix path. All timeseries start with the matched prefix path will be
@@ -845,37 +784,6 @@ public class MTreeBelowSGMemoryImpl implements IMTreeBelowSG {
     }
   }
 
-  /**
-   * Get child node in the next level of the given path.
-   *
-   * <p>e.g., MTree has [root.sg1.d1.s1, root.sg1.d1.s2, root.sg1.d2.s1] given path = root.sg1,
-   * return [d1, d2]
-   *
-   * <p>e.g., MTree has [root.sg1.d1.s1, root.sg1.d1.s2, root.sg1.d2.s1] given path = root.sg1.d1
-   * return [s1, s2]
-   *
-   * @param pathPattern Path
-   * @return All child nodes' seriesPath(s) of given seriesPath.
-   */
-  @Override
-  public Set<String> getChildNodeNameInNextLevel(PartialPath pathPattern) throws MetadataException {
-    try {
-      MNodeCollector<Set<String>> collector =
-          new MNodeCollector<Set<String>>(
-              storageGroupMNode, pathPattern.concatNode(ONE_LEVEL_PATH_WILDCARD), store) {
-            @Override
-            protected void transferToResult(IMNode node) {
-              resultSet.add(node.getName());
-            }
-          };
-      collector.setResultSet(new TreeSet<>());
-      collector.traverse();
-      return collector.getResult();
-    } catch (IllegalPathException e) {
-      throw new IllegalPathException(pathPattern.getFullPath());
-    }
-  }
-
   /** Get all paths from root to the given level */
   @Override
   public List<PartialPath> getNodesListInGivenLevel(
@@ -921,16 +829,6 @@ public class MTreeBelowSGMemoryImpl implements IMTreeBelowSG {
     return counter.getCount();
   }
 
-  /**
-   * Get the count of timeseries matching the given path.
-   *
-   * @param pathPattern a path pattern or a full path, may contain wildcard
-   */
-  @Override
-  public long getAllTimeseriesCount(PartialPath pathPattern) throws MetadataException {
-    return getAllTimeseriesCount(pathPattern, false);
-  }
-
   @Override
   public long getAllTimeseriesCount(
       PartialPath pathPattern, boolean isPrefixMatch, List<String> timeseries, boolean hasTag)
@@ -958,30 +856,6 @@ public class MTreeBelowSGMemoryImpl implements IMTreeBelowSG {
     return counter.getCount();
   }
 
-  /**
-   * Get the count of devices matching the given path.
-   *
-   * @param pathPattern a path pattern or a full path, may contain wildcard
-   */
-  @Override
-  public long getDevicesNum(PartialPath pathPattern) throws MetadataException {
-    return getDevicesNum(pathPattern, false);
-  }
-
-  /**
-   * Get the count of nodes in the given level matching the given path. If using prefix match, the
-   * path pattern is used to match prefix path. All timeseries start with the matched prefix path
-   * will be counted.
-   */
-  @Override
-  public long getNodesCountInGivenLevel(PartialPath pathPattern, int level, boolean isPrefixMatch)
-      throws MetadataException {
-    MNodeLevelCounter counter = new MNodeLevelCounter(storageGroupMNode, pathPattern, store, level);
-    counter.setPrefixMatch(isPrefixMatch);
-    counter.traverse();
-    return counter.getCount();
-  }
-
   @Override
   public Map<PartialPath, Long> getMeasurementCountGroupByLevel(
       PartialPath pathPattern, int level, boolean isPrefixMatch) throws MetadataException {
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionMemoryImpl.java b/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionMemoryImpl.java
index 353b25e46d..7053d732e3 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionMemoryImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionMemoryImpl.java
@@ -30,7 +30,6 @@ import org.apache.iotdb.commons.utils.FileUtils;
 import org.apache.iotdb.consensus.ConsensusFactory;
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.exception.metadata.PathAlreadyExistException;
 import org.apache.iotdb.db.exception.metadata.SchemaDirCreationFailureException;
 import org.apache.iotdb.db.exception.metadata.SeriesNumberOverflowException;
 import org.apache.iotdb.db.exception.metadata.SeriesOverflowException;
@@ -120,9 +119,7 @@ import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARA
  *         <li>Interfaces for Entity/Device info Query
  *         <li>Interfaces for timeseries, measurement and schema info Query
  *       </ol>
- *   <li>Interfaces and methods for MNode query
  *   <li>Interfaces for alias and tag/attribute operations
- *   <li>Interfaces and Implementation for InsertPlan process
  *   <li>Interfaces and Implementation for Template operations
  * </ol>
  */
@@ -1013,18 +1010,6 @@ public class SchemaRegionMemoryImpl implements ISchemaRegion {
     return getMeasurementPathsWithAlias(pathPattern, 0, 0, isPrefixMatch, withTags).left;
   }
 
-  /**
-   * Return all measurement paths for given path if the path is abstract. Or return the path itself.
-   * Regular expression in this method is formed by the amalgamation of seriesPath and the character
-   * '*'.
-   *
-   * @param pathPattern can be a pattern or a full path of timeseries.
-   */
-  public List<MeasurementPath> getMeasurementPaths(PartialPath pathPattern)
-      throws MetadataException {
-    return getMeasurementPaths(pathPattern, false, false);
-  }
-
   /**
    * Similar to method getMeasurementPaths(), but return Path with alias and filter the result by
    * limit and offset. If using prefix match, the path pattern is used to match prefix path. All
@@ -1151,28 +1136,6 @@ public class SchemaRegionMemoryImpl implements ISchemaRegion {
   // endregion
   // endregion
 
-  // region Interfaces and methods for MNode query
-
-  /**
-   * Invoked during insertPlan process. Get target MeasurementMNode from given EntityMNode. If the
-   * result is not null and is not MeasurementMNode, it means a timeseries with same path cannot be
-   * created thus throw PathAlreadyExistException.
-   */
-  protected IMeasurementMNode getMeasurementMNode(IMNode deviceMNode, String measurementName)
-      throws MetadataException {
-    IMNode result = deviceMNode.getChild(measurementName);
-    if (result == null) {
-      return null;
-    }
-    if (result.isMeasurement()) {
-      return result.getAsMeasurementMNode();
-    } else {
-      throw new PathAlreadyExistException(
-          deviceMNode.getFullPath() + PATH_SEPARATOR + measurementName);
-    }
-  }
-  // endregion
-
   // region Interfaces for alias and tag/attribute operations
   /**
    * Set the new offset of a timeseries. Only used for Recover. When creating tags/attributes for a
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionSchemaFileImpl.java b/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionSchemaFileImpl.java
index 8fc8cf6795..e8b26f737f 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionSchemaFileImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionSchemaFileImpl.java
@@ -28,8 +28,6 @@ import org.apache.iotdb.commons.path.PathPatternTree;
 import org.apache.iotdb.consensus.ConsensusFactory;
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.exception.metadata.AliasAlreadyExistException;
-import org.apache.iotdb.db.exception.metadata.PathAlreadyExistException;
 import org.apache.iotdb.db.exception.metadata.SchemaDirCreationFailureException;
 import org.apache.iotdb.db.exception.metadata.SeriesNumberOverflowException;
 import org.apache.iotdb.db.exception.metadata.SeriesOverflowException;
@@ -115,9 +113,7 @@ import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARA
  *         <li>Interfaces for Entity/Device info Query
  *         <li>Interfaces for timeseries, measurement and schema info Query
  *       </ol>
- *   <li>Interfaces and methods for MNode query
  *   <li>Interfaces for alias and tag/attribute operations
- *   <li>Interfaces and Implementation for InsertPlan process
  *   <li>Interfaces and Implementation for Template operations
  * </ol>
  */
@@ -606,35 +602,6 @@ public class SchemaRegionSchemaFileImpl implements ISchemaRegion {
     }
   }
 
-  /**
-   * Add one timeseries to metadata tree, if the timeseries already exists, throw exception
-   *
-   * @param path the timeseries path
-   * @param dataType the dateType {@code DataType} of the timeseries
-   * @param encoding the encoding function {@code Encoding} of the timeseries
-   * @param compressor the compressor function {@code Compressor} of the time series
-   */
-  private void createTimeseries(
-      PartialPath path,
-      TSDataType dataType,
-      TSEncoding encoding,
-      CompressionType compressor,
-      Map<String, String> props)
-      throws MetadataException {
-    try {
-      createTimeseries(
-          SchemaRegionWritePlanFactory.getCreateTimeSeriesPlan(
-              path, dataType, encoding, compressor, props, null, null, null));
-    } catch (PathAlreadyExistException | AliasAlreadyExistException e) {
-      if (logger.isDebugEnabled()) {
-        logger.debug(
-            "Ignore PathAlreadyExistException and AliasAlreadyExistException when Concurrent inserting"
-                + " a non-exist time series {}",
-            path);
-      }
-    }
-  }
-
   public void createAlignedTimeSeries(
       PartialPath prefixPath,
       List<String> measurements,
@@ -1226,30 +1193,6 @@ public class SchemaRegionSchemaFileImpl implements ISchemaRegion {
   // endregion
   // endregion
 
-  // region Interfaces and methods for MNode query
-
-  /**
-   * Invoked during insertPlan process. Get target MeasurementMNode from given EntityMNode. If the
-   * result is not null and is not MeasurementMNode, it means a timeseries with same path cannot be
-   * created thus throw PathAlreadyExistException.
-   */
-  protected IMeasurementMNode getMeasurementMNode(IMNode deviceMNode, String measurementName)
-      throws MetadataException {
-    IMNode result = mtree.getChildFromPinnedMNode(deviceMNode, measurementName);
-    if (result == null) {
-      return null;
-    }
-
-    mtree.unPinMNode(result);
-    if (result.isMeasurement()) {
-      return result.getAsMeasurementMNode();
-    } else {
-      throw new PathAlreadyExistException(
-          deviceMNode.getFullPath() + PATH_SEPARATOR + measurementName);
-    }
-  }
-  // endregion
-
   // region Interfaces for alias and tag/attribute operations
   /**
    * Set the new offset of a timeseries. Only used for Recover. When creating tags/attributes for a
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGTest.java
index b89306282b..359ab39ff5 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGTest.java
@@ -40,7 +40,6 @@ import org.junit.Before;
 import org.junit.Test;
 
 import java.io.IOException;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashSet;
@@ -130,26 +129,6 @@ public abstract class MTreeBelowSGTest {
     }
   }
 
-  @Test
-  public void testAddAndPathExist() throws MetadataException {
-    storageGroup = getStorageGroup(new PartialPath("root.laptop"));
-    assertFalse(storageGroup.isPathExist(new PartialPath("root.laptop.d1")));
-    try {
-      storageGroup.createTimeseries(
-          new PartialPath("root.laptop.d1.s1"),
-          TSDataType.INT32,
-          TSEncoding.RLE,
-          TSFileDescriptor.getInstance().getConfig().getCompressor(),
-          Collections.emptyMap(),
-          null);
-    } catch (MetadataException e1) {
-      fail(e1.getMessage());
-    }
-    assertTrue(storageGroup.isPathExist(new PartialPath("root.laptop.d1")));
-    assertTrue(storageGroup.isPathExist(new PartialPath("root.laptop")));
-    assertFalse(storageGroup.isPathExist(new PartialPath("root.laptop.d1.s2")));
-  }
-
   @Test
   public void testAddAndQueryPath() {
     try {
@@ -202,13 +181,13 @@ public abstract class MTreeBelowSGTest {
     try {
       assertNotNull(storageGroup);
       List<MeasurementPath> result =
-          storageGroup.getMeasurementPaths(new PartialPath("root.a.*.s0"));
+          storageGroup.getMeasurementPaths(new PartialPath("root.a.*.s0"), false);
       result.sort(Comparator.comparing(MeasurementPath::getFullPath));
       assertEquals(2, result.size());
       assertEquals("root.a.d0.s0", result.get(0).getFullPath());
       assertEquals("root.a.d1.s0", result.get(1).getFullPath());
 
-      result = storageGroup.getMeasurementPaths(new PartialPath("root.a.*.*.s0"));
+      result = storageGroup.getMeasurementPaths(new PartialPath("root.a.*.*.s0"), false);
       assertEquals("root.a.b.d0.s0", result.get(0).getFullPath());
     } catch (MetadataException e) {
       e.printStackTrace();
@@ -269,13 +248,13 @@ public abstract class MTreeBelowSGTest {
       assertNotNull(storageGroup);
 
       List<MeasurementPath> result =
-          storageGroup.getMeasurementPaths(new PartialPath("root.a.*.s0"));
+          storageGroup.getMeasurementPaths(new PartialPath("root.a.*.s0"), false);
       result.sort(Comparator.comparing(MeasurementPath::getFullPath));
       assertEquals(2, result.size());
       assertEquals("root.a.d0.s0", result.get(0).getFullPath());
       assertEquals("root.a.d1.s0", result.get(1).getFullPath());
 
-      result = storageGroup.getMeasurementPaths(new PartialPath("root.a.*.temperature"));
+      result = storageGroup.getMeasurementPaths(new PartialPath("root.a.*.temperature"), false);
       result.sort(Comparator.comparing(MeasurementPath::getFullPath));
       assertEquals(2, result.size());
       assertEquals("root.a.d0.s0", result.get(0).getFullPath());
@@ -313,50 +292,6 @@ public abstract class MTreeBelowSGTest {
     }
   }
 
-  @Test
-  public void testGetAllChildNodeNamesByPath() {
-    try {
-      storageGroup = getStorageGroup(new PartialPath("root.a"));
-
-      storageGroup.createTimeseries(
-          new PartialPath("root.a.d0.s0"),
-          TSDataType.INT32,
-          TSEncoding.RLE,
-          TSFileDescriptor.getInstance().getConfig().getCompressor(),
-          Collections.emptyMap(),
-          null);
-      storageGroup.createTimeseries(
-          new PartialPath("root.a.d0.s1"),
-          TSDataType.INT32,
-          TSEncoding.RLE,
-          TSFileDescriptor.getInstance().getConfig().getCompressor(),
-          Collections.emptyMap(),
-          null);
-      storageGroup.createTimeseries(
-          new PartialPath("root.a.d5"),
-          TSDataType.INT32,
-          TSEncoding.RLE,
-          TSFileDescriptor.getInstance().getConfig().getCompressor(),
-          Collections.emptyMap(),
-          null);
-
-      // getChildNodeByPath
-      Set<String> result1 = storageGroup.getChildNodeNameInNextLevel(new PartialPath("root.a.d0"));
-      Set<String> result2 = storageGroup.getChildNodeNameInNextLevel(new PartialPath("root.a"));
-      assertEquals(new HashSet<>(Arrays.asList("s0", "s1")), result1);
-      assertEquals(new HashSet<>(Arrays.asList("d0", "d5")), result2);
-
-      // if child node is nll   will return  null HashSet
-      Set<String> result3 = storageGroup.getChildNodeNameInNextLevel(new PartialPath("root.a.d5"));
-      assertEquals(result3, new HashSet<>(Collections.emptyList()));
-
-      Set<String> result4 = storageGroup.getChildNodeNameInNextLevel(new PartialPath("root"));
-      assertEquals(new HashSet<>(Collections.singletonList("a")), result4);
-    } catch (MetadataException e1) {
-      e1.printStackTrace();
-    }
-  }
-
   @Test
   public void testSetStorageGroup() throws MetadataException {
     try {
@@ -371,7 +306,6 @@ public abstract class MTreeBelowSGTest {
           "root.laptop.d1",
           root.getBelongedStorageGroup(new PartialPath("root.laptop.d1.s1")).getFullPath());
 
-      assertFalse(storageGroup.isPathExist(new PartialPath("root.laptop.d1.s1")));
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
@@ -382,9 +316,6 @@ public abstract class MTreeBelowSGTest {
       Assert.assertEquals(
           "some children of root.laptop have already been created as database", e.getMessage());
     }
-    // check timeseries
-    assertFalse(storageGroup.isPathExist(new PartialPath("root.laptop.d1.s0")));
-    assertFalse(storageGroup.isPathExist(new PartialPath("root.laptop.d1.s1")));
 
     try {
       assertEquals(
@@ -417,7 +348,7 @@ public abstract class MTreeBelowSGTest {
       e.printStackTrace();
       fail(e.getMessage());
     }
-    assertFalse(storageGroup.isPathExist(new PartialPath("root.laptop.d1.s0")));
+
     try {
       root.deleteStorageGroup(new PartialPath("root.laptop.d1"));
     } catch (MetadataException e) {
@@ -429,69 +360,6 @@ public abstract class MTreeBelowSGTest {
     assertFalse(root.isStorageGroupAlreadySet(new PartialPath("root.laptop")));
   }
 
-  @Test
-  public void testGetAllTimeseriesCount() {
-    try {
-      storageGroup = getStorageGroup(new PartialPath("root.laptop"));
-      storageGroup.createTimeseries(
-          new PartialPath("root.laptop.d1.s1"),
-          TSDataType.INT32,
-          TSEncoding.PLAIN,
-          CompressionType.GZIP,
-          null,
-          null);
-      storageGroup.createTimeseries(
-          new PartialPath("root.laptop.d1.s2"),
-          TSDataType.INT32,
-          TSEncoding.PLAIN,
-          CompressionType.GZIP,
-          null,
-          null);
-      storageGroup.createTimeseries(
-          new PartialPath("root.laptop.d2.s1"),
-          TSDataType.INT32,
-          TSEncoding.PLAIN,
-          CompressionType.GZIP,
-          null,
-          null);
-      storageGroup.createTimeseries(
-          new PartialPath("root.laptop.d2.s2"),
-          TSDataType.INT32,
-          TSEncoding.PLAIN,
-          CompressionType.GZIP,
-          null,
-          null);
-
-      assertEquals(4, storageGroup.getAllTimeseriesCount(new PartialPath("root.laptop.**")));
-      assertEquals(2, storageGroup.getAllTimeseriesCount(new PartialPath("root.laptop.*.s1")));
-      assertEquals(0, storageGroup.getAllTimeseriesCount(new PartialPath("root.laptop.d1.s3")));
-
-      assertEquals(
-          1,
-          storageGroup.getNodesCountInGivenLevel(new PartialPath("root.laptop.**.s1"), 1, false));
-      assertEquals(
-          1, storageGroup.getNodesCountInGivenLevel(new PartialPath("root.laptop.*.*"), 1, false));
-      assertEquals(
-          2, storageGroup.getNodesCountInGivenLevel(new PartialPath("root.laptop.*.*"), 2, false));
-      assertEquals(
-          2, storageGroup.getNodesCountInGivenLevel(new PartialPath("root.laptop.*"), 2, false));
-      assertEquals(
-          4, storageGroup.getNodesCountInGivenLevel(new PartialPath("root.laptop.*.*"), 3, false));
-      assertEquals(
-          2, storageGroup.getNodesCountInGivenLevel(new PartialPath("root.laptop.**"), 2, false));
-      assertEquals(
-          4, storageGroup.getNodesCountInGivenLevel(new PartialPath("root.laptop.**"), 3, false));
-      assertEquals(
-          2, storageGroup.getNodesCountInGivenLevel(new PartialPath("root.laptop.d1.*"), 3, false));
-      assertEquals(
-          0,
-          storageGroup.getNodesCountInGivenLevel(new PartialPath("root.laptop.d1.**"), 4, false));
-    } catch (MetadataException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
   @Test
   public void testAddSubDevice() throws MetadataException {
     storageGroup = getStorageGroup(new PartialPath("root.laptop"));
@@ -512,8 +380,6 @@ public abstract class MTreeBelowSGTest {
 
     assertEquals(2, storageGroup.getDevices(new PartialPath("root"), true).size());
     assertEquals(2, storageGroup.getDevices(new PartialPath("root.**"), false).size());
-    assertEquals(2, storageGroup.getAllTimeseriesCount(new PartialPath("root.**")));
-    assertEquals(2, storageGroup.getMeasurementPaths(new PartialPath("root.**")).size());
     assertEquals(
         2,
         storageGroup
@@ -621,22 +487,22 @@ public abstract class MTreeBelowSGTest {
         null,
         null);
 
-    Assert.assertEquals(0, storageGroup.getDevicesNum(new PartialPath("root")));
-    Assert.assertEquals(1, storageGroup.getDevicesNum(new PartialPath("root.laptop")));
-    Assert.assertEquals(0, storageGroup.getDevicesNum(new PartialPath("root.laptop.s1")));
-    Assert.assertEquals(1, storageGroup.getDevicesNum(new PartialPath("root.laptop.d1")));
-    Assert.assertEquals(2, storageGroup.getDevicesNum(new PartialPath("root.laptop.*")));
-    Assert.assertEquals(2, storageGroup.getDevicesNum(new PartialPath("root.laptop.*.*")));
-    Assert.assertEquals(0, storageGroup.getDevicesNum(new PartialPath("root.laptop.*.*.*")));
-    Assert.assertEquals(4, storageGroup.getDevicesNum(new PartialPath("root.laptop.**")));
-    Assert.assertEquals(5, storageGroup.getDevicesNum(new PartialPath("root.**")));
-    Assert.assertEquals(4, storageGroup.getDevicesNum(new PartialPath("root.**.*")));
-    Assert.assertEquals(4, storageGroup.getDevicesNum(new PartialPath("root.*.**")));
-    Assert.assertEquals(2, storageGroup.getDevicesNum(new PartialPath("root.**.d1")));
-    Assert.assertEquals(1, storageGroup.getDevicesNum(new PartialPath("root.laptop.*.d1")));
-    Assert.assertEquals(3, storageGroup.getDevicesNum(new PartialPath("root.**.d*")));
-    Assert.assertEquals(1, storageGroup.getDevicesNum(new PartialPath("root.laptop.**.s1")));
-    Assert.assertEquals(1, storageGroup.getDevicesNum(new PartialPath("root.*.d2.*")));
+    Assert.assertEquals(0, storageGroup.getDevicesNum(new PartialPath("root"), false));
+    Assert.assertEquals(1, storageGroup.getDevicesNum(new PartialPath("root.laptop"), false));
+    Assert.assertEquals(0, storageGroup.getDevicesNum(new PartialPath("root.laptop.s1"), false));
+    Assert.assertEquals(1, storageGroup.getDevicesNum(new PartialPath("root.laptop.d1"), false));
+    Assert.assertEquals(2, storageGroup.getDevicesNum(new PartialPath("root.laptop.*"), false));
+    Assert.assertEquals(2, storageGroup.getDevicesNum(new PartialPath("root.laptop.*.*"), false));
+    Assert.assertEquals(0, storageGroup.getDevicesNum(new PartialPath("root.laptop.*.*.*"), false));
+    Assert.assertEquals(4, storageGroup.getDevicesNum(new PartialPath("root.laptop.**"), false));
+    Assert.assertEquals(5, storageGroup.getDevicesNum(new PartialPath("root.**"), false));
+    Assert.assertEquals(4, storageGroup.getDevicesNum(new PartialPath("root.**.*"), false));
+    Assert.assertEquals(4, storageGroup.getDevicesNum(new PartialPath("root.*.**"), false));
+    Assert.assertEquals(2, storageGroup.getDevicesNum(new PartialPath("root.**.d1"), false));
+    Assert.assertEquals(1, storageGroup.getDevicesNum(new PartialPath("root.laptop.*.d1"), false));
+    Assert.assertEquals(3, storageGroup.getDevicesNum(new PartialPath("root.**.d*"), false));
+    Assert.assertEquals(1, storageGroup.getDevicesNum(new PartialPath("root.laptop.**.s1"), false));
+    Assert.assertEquals(1, storageGroup.getDevicesNum(new PartialPath("root.*.d2.*"), false));
   }
 
   @Test
@@ -695,46 +561,6 @@ public abstract class MTreeBelowSGTest {
         2, storageGroup.getNodesListInGivenLevel(new PartialPath("root.*.*.s1"), 2, false).size());
   }
 
-  @Test
-  public void testGetDeviceForTimeseries() throws MetadataException {
-    storageGroup = getStorageGroup(new PartialPath("root.sg"));
-    storageGroup.createTimeseries(
-        new PartialPath("root.sg.a1.d1.s1"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.GZIP,
-        null,
-        null);
-    storageGroup.createTimeseries(
-        new PartialPath("root.sg.a1.d1.s2"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.GZIP,
-        null,
-        null);
-
-    storageGroup.createTimeseries(
-        new PartialPath("root.sg.a2.d2.s1"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.GZIP,
-        null,
-        null);
-    storageGroup.createTimeseries(
-        new PartialPath("root.sg.a2.d2.s2"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.GZIP,
-        null,
-        null);
-
-    Assert.assertEquals(2, storageGroup.getDevicesByTimeseries(new PartialPath("root.**")).size());
-    Assert.assertEquals(
-        1, storageGroup.getDevicesByTimeseries(new PartialPath("root.*.*.d1.*")).size());
-    Assert.assertEquals(
-        2, storageGroup.getDevicesByTimeseries(new PartialPath("root.*.*.d*.*")).size());
-  }
-
   @Test
   public void testGetMeasurementCountGroupByLevel() throws Exception {
     storageGroup = getStorageGroup(new PartialPath("root.sg"));