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 0f326e902fe12952f9972e1990a172baf48d8073 Author: lisijia <[email protected]> AuthorDate: Wed Mar 9 17:04:58 2022 +0800 implement show devices --- .../apache/iotdb/db/metadata/rocksdb/MRocksDBManager.java | 13 +++++++++++-- .../org/apache/iotdb/db/metadata/rocksdb/RocksDBUtils.java | 9 +++++++++ 2 files changed, 20 insertions(+), 2 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 8903cca..3161903 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 @@ -1503,7 +1503,7 @@ public class MRocksDBManager implements IMetaManager { throws MetadataException { Set<PartialPath> allPath = new HashSet<>(); - getMatchedPathByNodeType(pathPattern.getNodes(), new Character[] {NODE_TYPE_SG}, allPath); + getMatchedPathByNodeType(pathPattern.getNodes(), new Character[] {NODE_TYPE_ENTITY}, allPath); return allPath; } @@ -1530,7 +1530,16 @@ public class MRocksDBManager implements IMetaManager { */ @Override public List<ShowDevicesResult> getMatchedDevices(ShowDevicesPlan plan) throws MetadataException { - return null; + List<ShowDevicesResult> res = Collections.synchronizedList(new ArrayList<>()); + BiFunction<byte[], byte[], Boolean> function = + (a, b) -> { + String fullPath = RocksDBUtils.getPathByInnerName(new String(a)); + res.add(new ShowDevicesResult(fullPath, RocksDBUtils.isAligned(b))); + return true; + }; + traverseOutcomeBasins( + plan.getPath().getNodes(), MAX_PATH_DEPTH, function, new Character[] {NODE_TYPE_ENTITY}); + return res; } // endregion diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/RocksDBUtils.java b/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/RocksDBUtils.java index 2bf01f5..ee0c29b 100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/RocksDBUtils.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/RocksDBUtils.java @@ -58,6 +58,7 @@ import static org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.ESCAPE_PATH_S import static org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.FLAG_HAS_ALIAS; import static org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.FLAG_HAS_ATTRIBUTES; import static org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.FLAG_HAS_TAGS; +import static org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.FLAG_IS_ALIGNED; import static org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.FLAG_SET_TTL; import static org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.NODE_TYPE_ALIAS; import static org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.NODE_TYPE_ENTITY; @@ -338,6 +339,14 @@ public class RocksDBUtils { return obj; } + public static boolean isAligned(byte[] value) { + ByteBuffer byteBuffer = ByteBuffer.wrap(value); + // skip the version flag and node type flag + ReadWriteIOUtils.readByte(byteBuffer); + // get block type + byte flag = ReadWriteIOUtils.readByte(byteBuffer); + return (flag & FLAG_IS_ALIGNED) > 0; + } /** * get inner name by converting partial path. *
