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 446899388c984b1692a9cabe6584066bf674bf74 Author: lisijia <[email protected]> AuthorDate: Wed Mar 2 11:17:06 2022 +0800 updated the matched interface --- .../iotdb/db/metadata/rocksdb/MRocksDBManager.java | 34 +++++++++++++++------- 1 file changed, 24 insertions(+), 10 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 e009dfc..fc7a066 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 @@ -98,6 +98,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -1047,7 +1048,8 @@ public class MRocksDBManager implements IMetaManager { if (RocksDBUtils.suffixMatch(iterator.key(), suffixToMatch)) { if (lastIteration) { System.out.println("matched key: " + new String(iterator.key())); - consumer.accept(new String(iterator.key())); + consumer.accept( + RocksDBUtils.getPathByInnerName(new String(iterator.key()))); } else { tempNodes.add(RocksDBUtils.toMetaNodes(iterator.key())); } @@ -1180,13 +1182,7 @@ public class MRocksDBManager implements IMetaManager { private int getCountByNodeType(Character[] nodetype, String[] nodes) throws IllegalPathException { AtomicInteger atomicInteger = new AtomicInteger(0); - Consumer<String> consumer = - new Consumer<String>() { - @Override - public void accept(String s) { - atomicInteger.incrementAndGet(); - } - }; + Consumer<String> consumer = s -> atomicInteger.incrementAndGet(); replaceMultiWildcard(nodes, MAX_PATH_DEPTH, consumer, nodetype); return atomicInteger.get(); @@ -1433,7 +1429,22 @@ public class MRocksDBManager implements IMetaManager { @Override public List<PartialPath> getMatchedStorageGroups(PartialPath pathPattern, boolean isPrefixMatch) throws MetadataException { - return new ArrayList<>(getMatchedPathWithNodeType(isPrefixMatch, pathPattern, NODE_TYPE_SG)); + List<PartialPath> allPath = new ArrayList<>(); + getMatchedPathByNodeType(pathPattern.getNodes(), new Character[] {NODE_TYPE_SG}, allPath); + return allPath; + } + + private void getMatchedPathByNodeType( + String[] nodes, Character[] nodetype, Collection<PartialPath> collection) + throws IllegalPathException { + List<String> allResult = Collections.synchronizedList(new ArrayList<>()); + Consumer<String> consumer = allResult::add; + + replaceMultiWildcard(nodes, MAX_PATH_DEPTH, consumer, nodetype); + + for (String path : allResult) { + collection.add(new PartialPath(path)); + } } /** Get all storage group paths */ @@ -1497,7 +1508,10 @@ public class MRocksDBManager implements IMetaManager { @Override public Set<PartialPath> getMatchedDevices(PartialPath pathPattern, boolean isPrefixMatch) throws MetadataException { - return getMatchedPathWithNodeType(isPrefixMatch, pathPattern, NODE_TYPE_ENTITY); + + Set<PartialPath> allPath = new HashSet<>(); + getMatchedPathByNodeType(pathPattern.getNodes(), new Character[] {NODE_TYPE_SG}, allPath); + return allPath; } private Set<PartialPath> getMatchedPathWithNodeType(
