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
