You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2022/03/22 01:27:41 UTC

[iotdb] branch rel/0.13 updated: [To rel/0.13][IOTDB-2759]Complete result of show template using or set on template (#5271)

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

haonan pushed a commit to branch rel/0.13
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/rel/0.13 by this push:
     new 39027b5  [To rel/0.13][IOTDB-2759]Complete result of show template using or set on template (#5271)
39027b5 is described below

commit 39027b52f0c3479ff6dac5f4709c4d79564a50b1
Author: ZhaoXin <x_...@163.com>
AuthorDate: Tue Mar 22 09:25:40 2022 +0800

    [To rel/0.13][IOTDB-2759]Complete result of show template using or set on template (#5271)
---
 .../org/apache/iotdb/db/metadata/mtree/MTree.java  | 10 ++++-----
 .../db/metadata/mtree/traverser/Traverser.java     |  3 ++-
 .../apache/iotdb/session/template/TemplateUT.java  | 24 +++++++++++++++++++++-
 3 files changed, 29 insertions(+), 8 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTree.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTree.java
index 27aeb8a..f39fd2b 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTree.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTree.java
@@ -107,7 +107,6 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Stream;
 
 import static java.util.stream.Collectors.toList;
-import static org.apache.iotdb.db.conf.IoTDBConstant.MULTI_LEVEL_PATH_WILDCARD;
 import static org.apache.iotdb.db.conf.IoTDBConstant.ONE_LEVEL_PATH_WILDCARD;
 import static org.apache.iotdb.db.metadata.lastCache.LastCacheManager.getLastTimeStamp;
 
@@ -1768,8 +1767,7 @@ public class MTree implements Serializable {
     List<String> resSet = new ArrayList<>();
     for (PartialPath sgPath : initPath) {
       CollectorTraverser<Set<String>> setTemplatePaths =
-          new CollectorTraverser<Set<String>>(
-              this.root, sgPath.concatNode(MULTI_LEVEL_PATH_WILDCARD)) {
+          new CollectorTraverser<Set<String>>(this.root, sgPath) {
             @Override
             protected boolean processInternalMatchedMNode(IMNode node, int idx, int level)
                 throws MetadataException {
@@ -1798,6 +1796,7 @@ public class MTree implements Serializable {
               return false;
             }
           };
+      setTemplatePaths.setPrefixMatch(true);
       setTemplatePaths.traverse();
     }
     return resSet;
@@ -1813,8 +1812,7 @@ public class MTree implements Serializable {
 
     for (PartialPath sgPath : initPath) {
       CollectorTraverser<Set<String>> usingTemplatePaths =
-          new CollectorTraverser<Set<String>>(
-              this.root, sgPath.concatNode(MULTI_LEVEL_PATH_WILDCARD)) {
+          new CollectorTraverser<Set<String>>(this.root, sgPath) {
             @Override
             protected boolean processInternalMatchedMNode(IMNode node, int idx, int level)
                 throws MetadataException {
@@ -1845,7 +1843,7 @@ public class MTree implements Serializable {
               return false;
             }
           };
-
+      usingTemplatePaths.setPrefixMatch(true);
       usingTemplatePaths.traverse();
     }
     return result;
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/traverser/Traverser.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/traverser/Traverser.java
index 12590ab..a13a2f3 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/traverser/Traverser.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/traverser/Traverser.java
@@ -273,7 +273,8 @@ public abstract class Traverser {
    */
   protected PartialPath getCurrentPartialPath(IMNode currentNode) throws IllegalPathException {
     Iterator<IMNode> nodes = traverseContext.descendingIterator();
-    StringBuilder builder = new StringBuilder(nodes.next().getName());
+    StringBuilder builder =
+        nodes.hasNext() ? new StringBuilder(nodes.next().getName()) : new StringBuilder();
     while (nodes.hasNext()) {
       builder.append(TsFileConstant.PATH_SEPARATOR);
       builder.append(nodes.next().getName());
diff --git a/session/src/test/java/org/apache/iotdb/session/template/TemplateUT.java b/session/src/test/java/org/apache/iotdb/session/template/TemplateUT.java
index 877e71c..a132ecf 100644
--- a/session/src/test/java/org/apache/iotdb/session/template/TemplateUT.java
+++ b/session/src/test/java/org/apache/iotdb/session/template/TemplateUT.java
@@ -151,6 +151,12 @@ public class TemplateUT {
         new HashSet<>(Arrays.asList("root.sg.v1", "root.sg.v2", "root.sg.v3")),
         new HashSet<>(session.showPathsTemplateSetOn("template1")));
 
+    session.setStorageGroup("root.test.sgt");
+    session.setSchemaTemplate("template1", "root.test.sgt");
+    assertEquals(
+        new HashSet<>(Arrays.asList("root.test.sgt", "root.sg.v1", "root.sg.v2", "root.sg.v3")),
+        new HashSet<>(session.showPathsTemplateSetOn("template1")));
+
     assertEquals(
         new HashSet<>(Arrays.asList()),
         new HashSet<>(session.showPathsTemplateUsingOn("template1")));
@@ -171,7 +177,8 @@ public class TemplateUT {
                 "root.sg.v3",
                 "root.sg.v4",
                 "root.sg.v5",
-                "root.sg.v6")),
+                "root.sg.v6",
+                "root.test.sgt")),
         new HashSet<>(session.showPathsTemplateSetOn("*")));
 
     session.insertRecord(
@@ -195,6 +202,21 @@ public class TemplateUT {
     assertEquals(
         new HashSet<>(Arrays.asList("root.sg.v1", "root.sg.v5")),
         new HashSet<>(session.showPathsTemplateUsingOn("*")));
+
+    session.insertRecord(
+        "root.test.sgt.GPS",
+        110L,
+        Arrays.asList("x"),
+        Arrays.asList(TSDataType.FLOAT),
+        Arrays.asList(1.0f));
+
+    assertEquals(
+        new HashSet<>(Arrays.asList("root.sg.v1", "root.sg.v5", "root.test.sgt")),
+        new HashSet<>(session.showPathsTemplateUsingOn("*")));
+
+    assertEquals(
+        new HashSet<>(Arrays.asList("root.test.sgt", "root.sg.v1")),
+        new HashSet<>(session.showPathsTemplateUsingOn("template1")));
   }
 
   @Test