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; }
