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.
    *

Reply via email to