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

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

commit a3d6b3525ed7e9a6da6650c8826eb7966a853a19
Author: HTHou <[email protected]>
AuthorDate: Mon Mar 17 21:36:37 2025 +0800

    Optimize single device tablet insert
---
 .../planner/plan/node/write/InsertTabletNode.java  | 16 ++++++++--
 .../node/write/RelationalInsertTabletNode.java     | 35 ++++++++++++++++------
 2 files changed, 40 insertions(+), 11 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertTabletNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertTabletNode.java
index 08557346c39..a963564516d 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertTabletNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertTabletNode.java
@@ -455,7 +455,7 @@ public class InsertTabletNode extends InsertNode implements 
WALEntryValue {
     writeTimes(buffer);
     writeBitMaps(buffer);
     writeValues(buffer);
-    ReadWriteIOUtils.write((byte) (isAligned ? 1 : 0), buffer);
+    writeTabletAttribute(buffer);
   }
 
   void subSerialize(DataOutputStream stream) throws IOException {
@@ -465,7 +465,7 @@ public class InsertTabletNode extends InsertNode implements 
WALEntryValue {
     writeTimes(stream);
     writeBitMaps(stream);
     writeValues(stream);
-    ReadWriteIOUtils.write((byte) (isAligned ? 1 : 0), stream);
+    writeTabletAttribute(stream);
   }
 
   /** Serialize measurements or measurement schemas, ignoring failed time 
series */
@@ -707,6 +707,14 @@ public class InsertTabletNode extends InsertNode 
implements WALEntryValue {
     }
   }
 
+  void writeTabletAttribute(ByteBuffer buffer) {
+    ReadWriteIOUtils.write((byte) (isAligned ? 1 : 0), buffer);
+  }
+
+  void writeTabletAttribute(DataOutputStream stream) throws IOException {
+    ReadWriteIOUtils.write((byte) (isAligned ? 1 : 0), stream);
+  }
+
   public static InsertTabletNode deserialize(ByteBuffer byteBuffer) {
     InsertTabletNode insertNode = new InsertTabletNode(new PlanNodeId(""));
     insertNode.subDeserialize(byteBuffer);
@@ -753,6 +761,10 @@ public class InsertTabletNode extends InsertNode 
implements WALEntryValue {
     }
     columns =
         QueryDataSetUtils.readTabletValuesFromBuffer(buffer, dataTypes, 
measurementSize, rowCount);
+    readTabletAttribute(buffer);
+  }
+
+  void readTabletAttribute(ByteBuffer buffer) {
     isAligned = buffer.get() == 1;
   }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/RelationalInsertTabletNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/RelationalInsertTabletNode.java
index 70321743453..8a89a3a1d01 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/RelationalInsertTabletNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/RelationalInsertTabletNode.java
@@ -221,16 +221,10 @@ public class RelationalInsertTabletNode extends 
InsertTabletNode {
     return splitMap;
   }
 
-  public static RelationalInsertTabletNode deserialize(ByteBuffer byteBuffer) {
-    RelationalInsertTabletNode insertNode = new RelationalInsertTabletNode(new 
PlanNodeId(""));
-    insertNode.subDeserialize(byteBuffer);
-    insertNode.setPlanNodeId(PlanNodeId.deserialize(byteBuffer));
-    return insertNode;
-  }
-
   @Override
   protected void serializeAttributes(ByteBuffer byteBuffer) {
-    super.serializeAttributes(byteBuffer);
+    getType().serialize(byteBuffer);
+    subSerialize(byteBuffer);
     for (int i = 0; i < measurements.length; i++) {
       if (measurements[i] != null) {
         columnCategories[i].serialize(byteBuffer);
@@ -240,7 +234,8 @@ public class RelationalInsertTabletNode extends 
InsertTabletNode {
 
   @Override
   protected void serializeAttributes(DataOutputStream stream) throws 
IOException {
-    super.serializeAttributes(stream);
+    getType().serialize(stream);
+    subSerialize(stream);
     for (int i = 0; i < measurements.length; i++) {
       if (measurements[i] != null) {
         columnCategories[i].serialize(stream);
@@ -248,6 +243,23 @@ public class RelationalInsertTabletNode extends 
InsertTabletNode {
     }
   }
 
+  @Override
+  void writeTabletAttribute(ByteBuffer byteBuffer) {
+    ReadWriteIOUtils.write((byte) (singleDevice ? -1 : 0), byteBuffer);
+  }
+
+  @Override
+  void writeTabletAttribute(DataOutputStream stream) throws IOException {
+    ReadWriteIOUtils.write((byte) (singleDevice ? -1 : 0), stream);
+  }
+
+  public static RelationalInsertTabletNode deserialize(ByteBuffer byteBuffer) {
+    RelationalInsertTabletNode insertNode = new RelationalInsertTabletNode(new 
PlanNodeId(""));
+    insertNode.subDeserialize(byteBuffer);
+    insertNode.setPlanNodeId(PlanNodeId.deserialize(byteBuffer));
+    return insertNode;
+  }
+
   @Override
   public void subDeserialize(ByteBuffer buffer) {
     super.subDeserialize(buffer);
@@ -258,6 +270,11 @@ public class RelationalInsertTabletNode extends 
InsertTabletNode {
     setColumnCategories(columnCategories);
   }
 
+  @Override
+  void readTabletAttribute(ByteBuffer buffer) {
+    singleDevice = buffer.get() == -1;
+  }
+
   @Override
   void subSerialize(IWALByteBufferView buffer, List<int[]> rangeList) {
     super.subSerialize(buffer, rangeList);

Reply via email to