This is an automated email from the ASF dual-hosted git repository.

chenyz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new d529f678960 PBTreeSketchTool support view (#11897)
d529f678960 is described below

commit d529f678960e5e1e5804a32d290aa27db9925240
Author: Chen YZ <[email protected]>
AuthorDate: Tue Jan 16 12:00:50 2024 +0800

    PBTreeSketchTool support view (#11897)
    
    PBTreeSketchTool support view
---
 .../mtree/impl/pbtree/schemafile/RecordUtils.java           | 10 +++++++++-
 .../mtree/impl/pbtree/schemafile/WrappedSegment.java        | 13 ++++++++++++-
 .../apache/iotdb/db/tools/schema/PBTreeFileSketchTool.java  |  2 +-
 3 files changed, 22 insertions(+), 3 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/RecordUtils.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/RecordUtils.java
index ac2e2b8c6bb..438ef594ae7 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/RecordUtils.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/RecordUtils.java
@@ -62,6 +62,7 @@ public class RecordUtils {
   private static final short ALIAS_OFFSET = 19;
   private static final short SEG_ADDRESS_OFFSET = 3;
   private static final short SCHEMA_OFFSET = 11;
+  private static final short VIEW_OFFSET = 12;
   private static final short INTERNAL_BITFLAG_OFFSET = 15;
 
   private static final byte INTERNAL_TYPE = 0;
@@ -310,7 +311,14 @@ public class RecordUtils {
     return res;
   }
 
-  public static boolean getAlignment(ByteBuffer recBuf) {
+  /** return as: [dataType, encoding, compression, preDelete] */
+  public static ViewExpression getViewExpression(ByteBuffer recBuf) {
+    int oriPos = recBuf.position();
+    recBuf.position(oriPos + VIEW_OFFSET);
+    return ViewExpression.deserialize(recBuf);
+  }
+
+  public static Boolean getAlignment(ByteBuffer recBuf) {
     int oriPos = recBuf.position();
     recBuf.position(oriPos + INTERNAL_BITFLAG_OFFSET);
     byte flag = ReadWriteIOUtils.readByte(recBuf);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/WrappedSegment.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/WrappedSegment.java
index c535a811a05..ce1065234d4 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/WrappedSegment.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/WrappedSegment.java
@@ -19,6 +19,7 @@
 package 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.schemafile;
 
 import org.apache.iotdb.commons.exception.MetadataException;
+import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpression;
 import org.apache.iotdb.commons.utils.TestOnly;
 import 
org.apache.iotdb.db.exception.metadata.schemafile.ColossalRecordException;
 import 
org.apache.iotdb.db.exception.metadata.schemafile.RecordDuplicatedException;
@@ -827,11 +828,12 @@ public class WrappedSegment implements 
ISegment<ByteBuffer, ICachedMNode> {
     for (Pair<String, Short> pair : keyAddressList) {
       bufferR.position(pair.right + pair.left.getBytes().length + 4);
       if (RecordUtils.getRecordType(bufferR) == 0 || 
RecordUtils.getRecordType(bufferR) == 1) {
+        Boolean isAligned = RecordUtils.getAlignment(bufferR);
         builder.append(
             String.format(
                 "(%s, %s, %s),",
                 pair.left,
-                RecordUtils.getAlignment(bufferR) ? "aligned" : "not_aligned",
+                isAligned == null ? "null" : isAligned ? "aligned" : 
"not_aligned",
                 RecordUtils.getRecordSegAddr(bufferR) == -1
                     ? -1
                     : 
Long.toHexString(RecordUtils.getRecordSegAddr(bufferR))));
@@ -845,6 +847,15 @@ public class WrappedSegment implements 
ISegment<ByteBuffer, ICachedMNode> {
                 TSEncoding.values()[schemaBytes[1]],
                 CompressionType.deserialize(schemaBytes[2]),
                 RecordUtils.getRecordAlias(bufferR)));
+      } else if (RecordUtils.getRecordType(bufferR) == 5) {
+        int oriPos = bufferR.position();
+        bufferR.position(oriPos + 3);
+        long of = ReadWriteIOUtils.readLong(bufferR);
+        boolean pred = ReadWriteIOUtils.readBool(bufferR);
+        ViewExpression viewExpression = ViewExpression.deserialize(bufferR);
+        // view
+        builder.append(
+            String.format("view(%s, %s, %s, %s),", pair.left, of, pred, 
viewExpression.toString()));
       } else {
         throw new BufferUnderflowException();
       }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/PBTreeFileSketchTool.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/PBTreeFileSketchTool.java
index 4bbf9f85d0e..8e27f9fe2b6 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/PBTreeFileSketchTool.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/PBTreeFileSketchTool.java
@@ -119,7 +119,7 @@ public class PBTreeFileSketchTool {
       parseBasicParams(commandLine);
       sketchFile(inputFile, outputFile);
     } catch (Exception e) {
-      logger.error("Encounter an error, because: {} ", e.getMessage());
+      logger.error("Encounter an error, because: {} ", e.getMessage(), e);
     }
   }
 

Reply via email to