You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by su...@apache.org on 2020/03/05 13:16:25 UTC

[incubator-iotdb] 01/01: [IOTDB-546] Show child paths statement doesn't show quotation marks in path

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

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

commit 40222c0a9fc42176179428a20632d744deacd34d
Author: samperson1997 <sz...@mails.tsinghua.edu.cn>
AuthorDate: Thu Mar 5 21:16:07 2020 +0800

    [IOTDB-546] Show child paths statement doesn't show quotation marks in path
---
 .../java/org/apache/iotdb/db/metadata/MTree.java   | 10 ++++--
 .../iotdb/db/metadata/MManagerBasicTest.java       | 41 +++++++++++++++++++---
 .../org/apache/iotdb/db/metadata/MTreeTest.java    |  3 ++
 3 files changed, 48 insertions(+), 6 deletions(-)

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 87b6afd..4869b70 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
@@ -562,7 +562,7 @@ public class MTree implements Serializable {
             parent + node.getName() + PATH_SEPARATOR, res, length);
       }
     } else {
-      if (node instanceof InternalMNode) {
+      if (node instanceof InternalMNode && node.getChildren().size() > 0) {
         for (MNode child : node.getChildren().values()) {
           if (!Pattern.matches(nodeReg.replace("*", ".*"), child.getName())) {
             continue;
@@ -575,7 +575,13 @@ public class MTree implements Serializable {
           }
         }
       } else if (idx == length) {
-        res.add(parent + node.getName());
+        String nodeName;
+        if (node.getName().contains(TsFileConstant.PATH_SEPARATOR)) {
+          nodeName = "\"" + node + "\"";
+        } else {
+          nodeName = node.getName();
+        }
+        res.add(parent + nodeName);
       }
     }
   }
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java
index ba8a67f..52d6a86 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java
@@ -66,6 +66,7 @@ public class MManagerBasicTest {
 
     try {
       manager.setStorageGroup("root.laptop.d1");
+      manager.setStorageGroup("root.1");
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
@@ -80,8 +81,7 @@ public class MManagerBasicTest {
 
     try {
       manager.createTimeseries("root.laptop.d1.s0", TSDataType.valueOf("INT32"),
-          TSEncoding.valueOf("RLE"), compressionType, Collections
-              .emptyMap());
+          TSEncoding.valueOf("RLE"), compressionType, Collections.emptyMap());
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
@@ -93,20 +93,31 @@ public class MManagerBasicTest {
     try {
       manager.createTimeseries("root.laptop.d1.s1", TSDataType.valueOf("INT32"),
           TSEncoding.valueOf("RLE"), compressionType, Collections.emptyMap());
+      manager.createTimeseries("root.laptop.d1.1_2", TSDataType.INT32, TSEncoding.RLE,
+          TSFileDescriptor.getInstance().getConfig().getCompressor(), Collections.EMPTY_MAP);
+      manager.createTimeseries("root.laptop.d1.\"1.2.3\"", TSDataType.INT32, TSEncoding.RLE,
+          TSFileDescriptor.getInstance().getConfig().getCompressor(), Collections.EMPTY_MAP);
+      manager.createTimeseries("root.1.2.3", TSDataType.INT32, TSEncoding.RLE,
+          TSFileDescriptor.getInstance().getConfig().getCompressor(), Collections.EMPTY_MAP);
     } catch (MetadataException e1) {
       e1.printStackTrace();
       fail(e1.getMessage());
     }
     assertTrue(manager.isPathExist("root.laptop.d1.s1"));
+    assertTrue(manager.isPathExist("root.laptop.d1.1_2"));
+    assertTrue(manager.isPathExist("root.laptop.d1.\"1.2.3\""));
+    assertTrue(manager.isPathExist("root.1.2.3"));
+    assertTrue(manager.isPathExist("root.1"));
+    assertTrue(manager.isPathExist("root.1.2"));
+
     try {
       manager.deleteTimeseries("root.laptop.d1.s1");
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
     }
-    // just delete s0, and don't delete root.laptop.d1??
-    // delete storage group or not
     assertFalse(manager.isPathExist("root.laptop.d1.s1"));
+
     try {
       manager.deleteTimeseries("root.laptop.d1.s0");
     } catch (MetadataException e) {
@@ -158,6 +169,28 @@ public class MManagerBasicTest {
               "root.laptop.d2"),
           e.getMessage());
     }
+
+    try {
+      manager.deleteTimeseries("root.laptop.d1.1_2");
+      manager.deleteTimeseries("root.laptop.d1.\"1.2.3\"");
+      manager.deleteTimeseries("root.1.2.3");
+    } catch (MetadataException e) {
+      e.printStackTrace();
+      fail(e.getMessage());
+    }
+    assertFalse(manager.isPathExist("root.laptop.d1.1_2"));
+    assertFalse(manager.isPathExist("root.laptop.d1.\"1.2.3\""));
+    assertFalse(manager.isPathExist("root.1.2.3"));
+    assertFalse(manager.isPathExist("root.1.2"));
+    assertTrue(manager.isPathExist("root.1"));
+
+    try {
+      manager.deleteStorageGroups(Collections.singletonList("root.1"));
+    } catch (MetadataException e) {
+      e.printStackTrace();
+      fail(e.getMessage());
+    }
+    assertFalse(manager.isPathExist("root.1"));
   }
 
   @Test
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/MTreeTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/MTreeTest.java
index b62dc50..6cd9783 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/MTreeTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/MTreeTest.java
@@ -278,6 +278,9 @@ public class MTreeTest {
       assertTrue(root.isStorageGroup("root.laptop.d1"));
       assertTrue(root.isStorageGroup("root.laptop.d2"));
       assertFalse(root.isStorageGroup("root.laptop.d3"));
+
+      root.setStorageGroup("root.1");
+      assertTrue(root.isStorageGroup("root.1"));
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());