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

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

commit 735852a76a08b0f73e0735c58facc55a18c1adce
Author: HTHou <[email protected]>
AuthorDate: Mon Apr 1 17:23:59 2024 +0800

    optimize search Index
---
 .../planner/plan/node/write/InsertRowNode.java     | 27 +++++++++++++++-------
 .../planner/plan/node/write/InsertRowsNode.java    | 11 ++++++---
 2 files changed, 27 insertions(+), 11 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowNode.java
index b0d8aad94c3..f15474a6443 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowNode.java
@@ -490,12 +490,12 @@ public class InsertRowNode extends InsertNode implements 
WALEntryValue {
   /** Serialized size for wal. */
   @Override
   public int serializedSize() {
-    return Short.BYTES + subSerializeSize();
+    return Short.BYTES + Long.BYTES + subSerializeSize();
   }
 
-  private int subSerializeSize() {
+  protected int subSerializeSize() {
     int size = 0;
-    size += Long.BYTES * 2;
+    size += Long.BYTES;
     size += ReadWriteIOUtils.sizeToWrite(devicePath.getFullPath());
     return size + serializeMeasurementsAndValuesSize();
   }
@@ -553,11 +553,11 @@ public class InsertRowNode extends InsertNode implements 
WALEntryValue {
   @Override
   public void serializeToWAL(IWALByteBufferView buffer) {
     buffer.putShort(PlanNodeType.INSERT_ROW.getNodeType());
+    buffer.putLong(searchIndex);
     subSerialize(buffer);
   }
 
-  private void subSerialize(IWALByteBufferView buffer) {
-    buffer.putLong(searchIndex);
+  protected void subSerialize(IWALByteBufferView buffer) {
     buffer.putLong(time);
     WALWriteUtils.write(devicePath.getFullPath(), buffer);
     serializeMeasurementsAndValues(buffer);
@@ -623,9 +623,15 @@ public class InsertRowNode extends InsertNode implements 
WALEntryValue {
    * @throws IllegalArgumentException - If meets illegal argument.
    */
   public static InsertRowNode deserializeFromWAL(DataInputStream stream) 
throws IOException {
+    long searchIndex = stream.readLong();
+    InsertRowNode insertNode = subDeserializeFromWAL(stream);
+    insertNode.setSearchIndex(searchIndex);
+    return insertNode;
+  }
+
+  protected static InsertRowNode subDeserializeFromWAL(DataInputStream stream) 
throws IOException {
     // we do not store plan node id in wal entry
     InsertRowNode insertNode = new InsertRowNode(new PlanNodeId(""));
-    insertNode.setSearchIndex(stream.readLong());
     insertNode.setTime(stream.readLong());
     try {
       insertNode.setDevicePath(
@@ -635,7 +641,6 @@ public class InsertRowNode extends InsertNode implements 
WALEntryValue {
       throw new IllegalArgumentException(DESERIALIZE_ERROR, e);
     }
     insertNode.deserializeMeasurementsAndValuesFromWAL(stream);
-
     return insertNode;
   }
 
@@ -700,9 +705,15 @@ public class InsertRowNode extends InsertNode implements 
WALEntryValue {
    * @throws IllegalArgumentException - If meets illegal argument
    */
   public static InsertRowNode deserializeFromWAL(ByteBuffer buffer) {
+    long searchIndex = buffer.getLong();
+    InsertRowNode insertNode = subDeserializeFromWAL(buffer);
+    insertNode.setSearchIndex(searchIndex);
+    return insertNode;
+  }
+
+  protected static InsertRowNode subDeserializeFromWAL(ByteBuffer buffer) {
     // we do not store plan node id in wal entry
     InsertRowNode insertNode = new InsertRowNode(new PlanNodeId(""));
-    insertNode.setSearchIndex(buffer.getLong());
     insertNode.setTime(buffer.getLong());
     try {
       insertNode.setDevicePath(new 
PartialPath(ReadWriteIOUtils.readString(buffer)));
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java
index 77c2de63d8e..f4b7fae02e2 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java
@@ -291,13 +291,14 @@ public class InsertRowsNode extends InsertNode implements 
WALEntryValue {
   @Override
   public void serializeToWAL(IWALByteBufferView buffer) {
     buffer.putShort(PlanNodeType.INSERT_ROWS.getNodeType());
+    buffer.putLong(searchIndex);
     subSerialize(buffer);
   }
 
   private void subSerialize(IWALByteBufferView buffer) {
     buffer.putInt(insertRowNodeList.size());
     for (InsertRowNode insertRowNode : insertRowNodeList) {
-      insertRowNode.serializeToWAL(buffer);
+      insertRowNode.subSerialize(buffer);
     }
   }
 
@@ -312,11 +313,13 @@ public class InsertRowsNode extends InsertNode implements 
WALEntryValue {
   public static InsertRowsNode deserializeFromWAL(DataInputStream stream) 
throws IOException {
     // we do not store plan node id in wal entry
     InsertRowsNode insertRowsNode = new InsertRowsNode(new PlanNodeId(""));
+    long searchIndex = stream.readLong();
     int listSize = stream.readInt();
     for (int i = 0; i < listSize; i++) {
-      InsertRowNode insertRowNode = InsertRowNode.deserializeFromWAL(stream);
+      InsertRowNode insertRowNode = 
InsertRowNode.subDeserializeFromWAL(stream);
       insertRowsNode.addOneInsertRowNode(insertRowNode, i);
     }
+    insertRowsNode.setSearchIndex(searchIndex);
     return insertRowsNode;
   }
 
@@ -330,11 +333,13 @@ public class InsertRowsNode extends InsertNode implements 
WALEntryValue {
   public static InsertRowsNode deserializeFromWAL(ByteBuffer buffer) {
     // we do not store plan node id in wal entry
     InsertRowsNode insertRowsNode = new InsertRowsNode(new PlanNodeId(""));
+    long searchIndex = buffer.getLong();
     int listSize = buffer.getInt();
     for (int i = 0; i < listSize; i++) {
-      InsertRowNode insertRowNode = InsertRowNode.deserializeFromWAL(buffer);
+      InsertRowNode insertRowNode = 
InsertRowNode.subDeserializeFromWAL(buffer);
       insertRowsNode.addOneInsertRowNode(insertRowNode, i);
     }
+    insertRowsNode.setSearchIndex(searchIndex);
     return insertRowsNode;
   }
   // endregion

Reply via email to