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);
}
}