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 25421c3aed3859c4d340e89b109dd758ff368115
Author: lisijia <[email protected]>
AuthorDate: Mon Mar 14 18:24:36 2022 +0800

    fix npe when query aligned timeseries
---
 .../iotdb/db/metadata/rocksdb/RocksDBUtils.java    | 43 ++++++++++++++++------
 .../iotdb/db/metadata/rocksdb/mnode/RMNode.java    |  4 +-
 .../metadata/rocksdb/mnode/RMeasurementMNode.java  |  2 +-
 3 files changed, 35 insertions(+), 14 deletions(-)

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 392ba35..616a0fa 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
@@ -43,9 +43,34 @@ import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
-import static org.apache.iotdb.db.conf.IoTDBConstant.*;
+import static org.apache.iotdb.db.conf.IoTDBConstant.MULTI_LEVEL_PATH_WILDCARD;
+import static org.apache.iotdb.db.conf.IoTDBConstant.ONE_LEVEL_PATH_WILDCARD;
+import static org.apache.iotdb.db.conf.IoTDBConstant.PATH_ROOT;
+import static 
org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.DATA_BLOCK_TYPE_ALIAS;
+import static 
org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.DATA_BLOCK_TYPE_ATTRIBUTES;
+import static 
org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.DATA_BLOCK_TYPE_ORIGIN_KEY;
+import static 
org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.DATA_BLOCK_TYPE_SCHEMA;
+import static 
org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.DATA_BLOCK_TYPE_TAGS;
+import static 
org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.DATA_BLOCK_TYPE_TTL;
+import static 
org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.DATA_VERSION;
+import static 
org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.DEFAULT_FLAG;
+import static 
org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.ESCAPE_PATH_SEPARATOR;
+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_SCHEMA;
+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;
+import static 
org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.NODE_TYPE_INTERNAL;
+import static 
org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.NODE_TYPE_MEASUREMENT;
+import static 
org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.NODE_TYPE_SG;
 import static 
org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.PATH_SEPARATOR;
-import static org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.*;
+import static org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.ROOT;
+import static org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.ROOT_CHAR;
+import static org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.ROOT_STRING;
+import static org.apache.iotdb.db.metadata.rocksdb.RockDBConstants.ZERO;
 
 public class RocksDBUtils {
 
@@ -339,17 +364,13 @@ public class RocksDBUtils {
    * @return inner name
    */
   public static String convertPartialPathToInner(String partialPath, int 
level, char nodeType) {
-    char lastChar = START_FLAG;
-    StringBuilder stringBuilder = new StringBuilder();
-    for (char c : partialPath.toCharArray()) {
-      if (START_FLAG == lastChar) {
-        stringBuilder.append(nodeType);
-      }
-      if (SPLIT_FLAG == lastChar) {
+    StringBuilder stringBuilder = new StringBuilder(nodeType + ROOT);
+    for (int i = partialPath.indexOf(PATH_SEPARATOR); i < 
partialPath.length(); i++) {
+      char currentChar = partialPath.charAt(i);
+      stringBuilder.append(partialPath.charAt(i));
+      if (currentChar == SPLIT_FLAG) {
         stringBuilder.append(level);
       }
-      stringBuilder.append(c);
-      lastChar = c;
     }
     return stringBuilder.toString();
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/mnode/RMNode.java 
b/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/mnode/RMNode.java
index 460072d..872adac 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/mnode/RMNode.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/mnode/RMNode.java
@@ -88,7 +88,7 @@ public abstract class RMNode implements IMNode {
       String parentInnerName =
           RocksDBUtils.convertPartialPathToInner(keyName, nodeNameMaxLevel, 
type.getValue());
       try {
-        value = readWriteHandler.get(null, (type + 
parentInnerName).getBytes());
+        value = readWriteHandler.get(null, parentInnerName.getBytes());
       } catch (RocksDBException e) {
         logger.error("Failed to get parent node.", e);
       }
@@ -101,7 +101,7 @@ public abstract class RMNode implements IMNode {
             node = new RInternalMNode(keyName);
             return node;
           case RockDBConstants.NODE_TYPE_ENTITY:
-            node = new REntityMNode(keyName);
+            node = new REntityMNode(keyName, value);
             return node;
           case RockDBConstants.NODE_TYPE_MEASUREMENT:
             node = new RMeasurementMNode(keyName, value);
diff --git 
a/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/mnode/RMeasurementMNode.java
 
b/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/mnode/RMeasurementMNode.java
index e619d3c..32d5348 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/mnode/RMeasurementMNode.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/mnode/RMeasurementMNode.java
@@ -72,7 +72,7 @@ public class RMeasurementMNode extends RMNode implements 
IMeasurementMNode {
   @Override
   public MeasurementPath getMeasurementPath() {
     MeasurementPath result = new MeasurementPath(super.getPartialPath(), 
schema);
-    //    result.setUnderAlignedEntity(getParent().isAligned());
+    result.setUnderAlignedEntity(getParent().isAligned());
     if (alias != null && !alias.isEmpty()) {
       result.setMeasurementAlias(alias);
     }

Reply via email to