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

jianyun pushed a commit to branch rocksdb/dev
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 4a39a9edcea6baa4be95e7da83405753d8311653
Author: lisijia <[email protected]>
AuthorDate: Wed Mar 16 16:45:24 2022 +0800

    support show child
---
 .../iotdb/db/metadata/rocksdb/MRocksDBManager.java | 27 +++++++++++++++-------
 1 file changed, 19 insertions(+), 8 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/MRocksDBManager.java
 
b/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/MRocksDBManager.java
index bf6ccfa..a3109ec 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/MRocksDBManager.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/MRocksDBManager.java
@@ -1264,16 +1264,27 @@ public class MRocksDBManager implements IMetaManager {
    */
   @Override
   public Set<String> getChildNodePathInNextLevel(PartialPath pathPattern) 
throws MetadataException {
-    Set<String> result = new HashSet<>();
+    // todo support wildcard
+    if (pathPattern.getFullPath().contains(ONE_LEVEL_PATH_WILDCARD)) {
+      throw new MetadataException(
+          "Wildcards are not currently supported for this operation [SHOW 
CHILD PATHS pathPattern].");
+    }
+    Set<String> result = Collections.synchronizedSet(new HashSet<>());
     String innerNameByLevel =
         RocksDBUtils.getLevelPath(
-            pathPattern.getNodes(),
-            pathPattern.getNodeLength() - 1,
-            pathPattern.getNodeLength() + 1);
-    Set<String> allKeyByPrefix = 
readWriteHandler.getKeyByPrefix(innerNameByLevel);
-    for (String str : allKeyByPrefix) {
-      result.add(RocksDBUtils.getPathByInnerName(str));
-    }
+                pathPattern.getNodes(),
+                pathPattern.getNodeLength() - 1,
+                pathPattern.getNodeLength())
+            + RockDBConstants.PATH_SEPARATOR
+            + pathPattern.getNodeLength();
+    Arrays.stream(ALL_NODE_TYPE_ARRAY)
+        .parallel()
+        .forEach(
+            x -> {
+              for (String string : readWriteHandler.getKeyByPrefix(x + 
innerNameByLevel)) {
+                result.add(RocksDBUtils.getPathByInnerName(string));
+              }
+            });
     return result;
   }
 

Reply via email to