This is an automated email from the ASF dual-hosted git repository.
haonan 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 a0750b6c76d Optimize the devicePath generation efficiency of PlanNode
when deserializing (#12749)
a0750b6c76d is described below
commit a0750b6c76d7b3168c335b435565f7b0eef595d2
Author: Potato <[email protected]>
AuthorDate: Tue Jun 18 14:29:02 2024 +0800
Optimize the devicePath generation efficiency of PlanNode when
deserializing (#12749)
---
.../iotdb/db/queryengine/plan/parser/StatementGenerator.java | 2 +-
.../plan/node/metedata/write/CreateAlignedTimeSeriesNode.java | 3 ++-
.../queryengine/plan/planner/plan/node/write/InsertRowNode.java | 8 ++++++--
.../plan/planner/plan/node/write/InsertRowsOfOneDeviceNode.java | 5 ++++-
.../plan/planner/plan/node/write/InsertTabletNode.java | 8 ++++++--
5 files changed, 19 insertions(+), 7 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGenerator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGenerator.java
index b0385c8e642..68bef30462f 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGenerator.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGenerator.java
@@ -527,7 +527,7 @@ public class StatementGenerator {
final long startTime = System.nanoTime();
// construct create aligned timeseries statement
CreateAlignedTimeSeriesStatement statement = new
CreateAlignedTimeSeriesStatement();
- statement.setDevicePath(new PartialPath(req.prefixPath));
+ statement.setDevicePath(DEVICE_PATH_CACHE.getPartialPath(req.prefixPath));
List<TSDataType> dataTypes = new ArrayList<>();
for (Integer dataType : req.dataTypes) {
dataTypes.add(TSDataType.deserialize(dataType.byteValue()));
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateAlignedTimeSeriesNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateAlignedTimeSeriesNode.java
index 64e70aad1bd..1fda758e775 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateAlignedTimeSeriesNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateAlignedTimeSeriesNode.java
@@ -23,6 +23,7 @@ import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.queryengine.plan.analyze.IAnalysis;
+import
org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeDevicePathCache;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
@@ -211,7 +212,7 @@ public class CreateAlignedTimeSeriesNode extends
WritePlanNode
byte[] bytes = new byte[length];
byteBuffer.get(bytes);
try {
- devicePath = new PartialPath(new String(bytes));
+ devicePath = DataNodeDevicePathCache.getInstance().getPartialPath(new
String(bytes));
} catch (IllegalPathException e) {
throw new IllegalArgumentException("Can not deserialize
CreateAlignedTimeSeriesNode", e);
}
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 bda7132fb7b..57107294f76 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
@@ -417,7 +417,9 @@ public class InsertRowNode extends InsertNode implements
WALEntryValue {
void subDeserialize(ByteBuffer byteBuffer) {
time = byteBuffer.getLong();
try {
- devicePath = new PartialPath(ReadWriteIOUtils.readString(byteBuffer));
+ devicePath =
+ DataNodeDevicePathCache.getInstance()
+ .getPartialPath(ReadWriteIOUtils.readString(byteBuffer));
} catch (IllegalPathException e) {
throw new IllegalArgumentException(DESERIALIZE_ERROR, e);
}
@@ -741,7 +743,9 @@ public class InsertRowNode extends InsertNode implements
WALEntryValue {
InsertRowNode insertNode = new InsertRowNode(new PlanNodeId(""));
insertNode.setTime(buffer.getLong());
try {
- insertNode.setDevicePath(new
PartialPath(ReadWriteIOUtils.readString(buffer)));
+ insertNode.setDevicePath(
+ DataNodeDevicePathCache.getInstance()
+ .getPartialPath(ReadWriteIOUtils.readString(buffer)));
} catch (IllegalPathException e) {
throw new IllegalArgumentException(DESERIALIZE_ERROR, e);
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsOfOneDeviceNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsOfOneDeviceNode.java
index 864880fd774..0ec16ef69c7 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsOfOneDeviceNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsOfOneDeviceNode.java
@@ -27,6 +27,7 @@ import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.commons.utils.StatusUtils;
import org.apache.iotdb.commons.utils.TimePartitionUtils;
import org.apache.iotdb.db.queryengine.plan.analyze.IAnalysis;
+import
org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeDevicePathCache;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
@@ -228,7 +229,9 @@ public class InsertRowsOfOneDeviceNode extends InsertNode {
List<Integer> insertRowNodeIndex = new ArrayList<>();
try {
- devicePath = new PartialPath(ReadWriteIOUtils.readString(byteBuffer));
+ devicePath =
+ DataNodeDevicePathCache.getInstance()
+ .getPartialPath((ReadWriteIOUtils.readString(byteBuffer)));
} catch (IllegalPathException e) {
throw new IllegalArgumentException("Cannot deserialize
InsertRowsOfOneDeviceNode", e);
}
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 6fc61399b35..58f6dd363c7 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
@@ -638,7 +638,9 @@ public class InsertTabletNode extends InsertNode implements
WALEntryValue {
public void subDeserialize(ByteBuffer buffer) {
try {
- devicePath = new PartialPath(ReadWriteIOUtils.readString(buffer));
+ devicePath =
+ DataNodeDevicePathCache.getInstance()
+ .getPartialPath((ReadWriteIOUtils.readString(buffer)));
} catch (IllegalPathException e) {
throw new IllegalArgumentException("Cannot deserialize
InsertTabletNode", e);
}
@@ -929,7 +931,9 @@ public class InsertTabletNode extends InsertNode implements
WALEntryValue {
private void subDeserializeFromWAL(ByteBuffer buffer) {
searchIndex = buffer.getLong();
try {
- devicePath = new PartialPath(ReadWriteIOUtils.readString(buffer));
+ devicePath =
+ DataNodeDevicePathCache.getInstance()
+ .getPartialPath((ReadWriteIOUtils.readString(buffer)));
} catch (IllegalPathException e) {
throw new IllegalArgumentException("Cannot deserialize
InsertTabletNode", e);
}