You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ge...@apache.org on 2020/07/14 11:56:24 UTC

[incubator-iotdb] branch optimize_path updated: add set StorageGroup

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

geniuspig pushed a commit to branch optimize_path
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git


The following commit(s) were added to refs/heads/optimize_path by this push:
     new 6297afb  add set StorageGroup
6297afb is described below

commit 6297afbc1f2738d5d4b673d6b682ad45e48ee1ef
Author: zhutianci <zh...@gmail.com>
AuthorDate: Tue Jul 14 19:56:06 2020 +0800

    add set StorageGroup
---
 .../org/apache/iotdb/db/metadata/MManager.java     | 28 ++++++++++++++++++++++
 .../java/org/apache/iotdb/db/metadata/MTree.java   |  6 +++--
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  |  2 +-
 .../iotdb/db/qp/strategy/LogicalGenerator.java     |  4 ++--
 .../qp/strategy/optimizer/ConcatPathOptimizer.java |  4 ++--
 .../org/apache/iotdb/tsfile/read/common/Path.java  |  1 -
 6 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
index b810458..0f04fd3 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
@@ -601,6 +601,34 @@ public class MManager {
   }
 
   /**
+   * Set storage group of the given path to MTree. Check
+   *
+   * @param nodes nodes
+   */
+  public void setStorageGroup(List<String> nodes) throws MetadataException {
+    lock.writeLock().lock();
+    try {
+      MNode node = mtree.setStorageGroup(nodes);
+      IoTDBConfigDynamicAdapter.getInstance().addOrDeleteStorageGroup(1);
+
+      if (config.isEnableParameterAdapter()) {
+        ActiveTimeSeriesCounter.getInstance().init(node.getFullPath());
+        seriesNumberInStorageGroups.put(node.getFullPath(), 0);
+      }
+      if (!isRecovering) {
+        logWriter.setStorageGroup(node.getFullPath());
+      }
+    } catch (IOException e) {
+      throw new MetadataException(e.getMessage());
+    } catch (ConfigAdjusterException e) {
+      mtree.deleteStorageGroup(nodes);
+      throw new MetadataException(e);
+    } finally {
+      lock.writeLock().unlock();
+    }
+  }
+
+  /**
    * Delete storage groups of given paths from MTree. Log format: "delete_storage_group,sg1,sg2,sg3"
    *
    * @param storageGroups list of paths to be deleted. Format: root.node
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java b/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
index 8bc3b30..9dd8b0c 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
@@ -242,8 +242,9 @@ public class MTree implements Serializable {
    *
    * @param nodeNames nodeNames
    */
-  void setStorageGroup(List<String> nodeNames) throws MetadataException {
+  MNode setStorageGroup(List<String> nodeNames) throws MetadataException {
     MNode cur = root;
+    StorageGroupMNode storageGroupMNode = null;
     if (nodeNames.size() <= 1 || !nodeNames.get(0).equals(root.getName())) {
       throw new IllegalPathException(nodeNames.toString());
     }
@@ -264,11 +265,12 @@ public class MTree implements Serializable {
       // node b has child sg
       throw new StorageGroupAlreadySetException(nodeNames.toString());
     } else {
-      StorageGroupMNode storageGroupMNode =
+      storageGroupMNode =
           new StorageGroupMNode(
               cur, nodeNames.get(i), IoTDBDescriptor.getInstance().getConfig().getDefaultTTL());
       cur.addChild(nodeNames.get(i), storageGroupMNode);
     }
+    return storageGroupMNode;
   }
 
   /**
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
index d80a464..5b6de19 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
@@ -1033,7 +1033,7 @@ public class PlanExecutor implements IPlanExecutor {
       throws QueryProcessException {
     Path path = setStorageGroupPlan.getPath();
     try {
-      mManager.setStorageGroup(path.getFullPath());
+      mManager.setStorageGroup(path.getNodes());
     } catch (MetadataException e) {
       throw new QueryProcessException(e);
     }
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/strategy/LogicalGenerator.java b/server/src/main/java/org/apache/iotdb/db/qp/strategy/LogicalGenerator.java
index 7f7c29b..24f4b1e 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/strategy/LogicalGenerator.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/strategy/LogicalGenerator.java
@@ -785,10 +785,10 @@ public class LogicalGenerator extends SqlBaseBaseListener {
   @Override
   public void enterDeleteStorageGroup(DeleteStorageGroupContext ctx) {
     super.enterDeleteStorageGroup(ctx);
-    List<Path> deletePaths = new ArrayList<>();
+    List<String> deletePaths = new ArrayList<>();
     List<FullPathContext> fullPaths = ctx.fullPath();
     for (FullPathContext fullPath : fullPaths) {
-      deletePaths.add(parseFullPath(fullPath));
+      deletePaths.add(fullPath.getText());
     }
     DeleteStorageGroupOperator deleteStorageGroupOperator = new DeleteStorageGroupOperator(
         SQLConstant.TOK_METADATA_DELETE_FILE_LEVEL);
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/ConcatPathOptimizer.java b/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/ConcatPathOptimizer.java
index 7948166..2f6c7ed 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/ConcatPathOptimizer.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/ConcatPathOptimizer.java
@@ -164,7 +164,7 @@ public class ConcatPathOptimizer implements ILogicalOptimizer {
       // selectPath cannot start with ROOT, which is guaranteed by TSParser
       Path selectPath = suffixPaths.get(i);
       for (Path fromPath : fromPaths) {
-        allPaths.add(Path.addNodes(selectPath, fromPath));
+        allPaths.add(Path.addNodes(fromPath, selectPath));
         extendListSafely(originAggregations, i, afterConcatAggregations);
       }
     }
@@ -225,7 +225,7 @@ public class ConcatPathOptimizer implements ILogicalOptimizer {
       return operator;
     }
     List<Path> concatPaths = new ArrayList<>();
-    fromPaths.forEach(fromPath -> concatPaths.add(Path.addNodes(filterPath, fromPath)));
+    fromPaths.forEach(fromPath -> concatPaths.add(Path.addNodes(fromPath, filterPath)));
     List<Path> noStarPaths = removeStarsInPathWithUnique(concatPaths);
     filterPaths.addAll(noStarPaths);
     if (noStarPaths.size() == 1) {
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Path.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Path.java
index f2d5d14..8cef5d1 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Path.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Path.java
@@ -19,7 +19,6 @@
 package org.apache.iotdb.tsfile.read.common;
 
 import java.io.Serializable;
-import java.util.ArrayList;
 import java.util.List;
 import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
 import org.apache.iotdb.tsfile.utils.StringContainer;