From 9502f7e926051b9fef712a35db3053fc88bf1f07 Mon Sep 17 00:00:00 2001 From: OneSizeFitQuorum Date: Mon, 17 Jun 2024 18:12:32 +0800 Subject: [PATCH 1/3] finish Signed-off-by: OneSizeFitQuorum --- .../node/metedata/write/CreateAlignedTimeSeriesNode.java | 3 ++- .../plan/planner/plan/node/write/InsertRowNode.java | 8 ++++++-- .../plan/node/write/InsertRowsOfOneDeviceNode.java | 5 ++++- .../plan/planner/plan/node/write/InsertTabletNode.java | 8 ++++++-- 4 files changed, 18 insertions(+), 6 deletions(-) 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 64e70aad1bdb8..1fda758e77517 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.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 static CreateAlignedTimeSeriesNode deserialize(ByteBuffer byteBuffer) { 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 bda7132fb7bfc..57107294f7658 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 static InsertRowNode deserialize(ByteBuffer byteBuffer) { 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 @@ protected static InsertRowNode subDeserializeFromWAL(ByteBuffer buffer) { 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 864880fd7749e..0ec16ef69c785 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.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 static InsertRowsOfOneDeviceNode deserialize(ByteBuffer byteBuffer) { List 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 6fc61399b3536..58f6dd363c738 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 static InsertTabletNode deserialize(ByteBuffer byteBuffer) { 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 static InsertTabletNode deserializeFromWAL(ByteBuffer buffer) { 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); } From d7c1f8ab90c5e7d93ca66e2b55319ff97e14fd09 Mon Sep 17 00:00:00 2001 From: OneSizeFitQuorum Date: Tue, 18 Jun 2024 09:53:44 +0800 Subject: [PATCH 2/3] fix review issue Signed-off-by: OneSizeFitQuorum --- .../db/queryengine/plan/parser/StatementGenerator.java | 6 +++--- 1 file changed, 3 insertions(+), 3 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 b0385c8e6420a..45ff470257e6a 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 @@ -510,7 +510,7 @@ public static CreateTimeSeriesStatement createStatement(TSCreateTimeseriesReq re final long startTime = System.nanoTime(); // construct create timeseries statement CreateTimeSeriesStatement statement = new CreateTimeSeriesStatement(); - statement.setPath(new PartialPath(req.path)); + statement.setPath(DEVICE_PATH_CACHE.getPartialPath(req.path)); statement.setDataType(TSDataType.deserialize((byte) req.dataType)); statement.setEncoding(TSEncoding.deserialize((byte) req.encoding)); statement.setCompressor(CompressionType.deserialize((byte) req.compressor)); @@ -527,7 +527,7 @@ public static CreateAlignedTimeSeriesStatement createStatement(TSCreateAlignedTi 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 dataTypes = new ArrayList<>(); for (Integer dataType : req.dataTypes) { dataTypes.add(TSDataType.deserialize(dataType.byteValue())); @@ -557,7 +557,7 @@ public static CreateMultiTimeSeriesStatement createStatement(TSCreateMultiTimese // construct create multi timeseries statement List paths = new ArrayList<>(); for (String path : req.paths) { - paths.add(new PartialPath(path)); + paths.add(DEVICE_PATH_CACHE.getPartialPath(path)); } List dataTypes = new ArrayList<>(); for (Integer dataType : req.dataTypes) { From 32124db2b1ee8152df2b9a01516d126125efc4c4 Mon Sep 17 00:00:00 2001 From: OneSizeFitQuorum Date: Tue, 18 Jun 2024 14:08:50 +0800 Subject: [PATCH 3/3] fix review issue Signed-off-by: OneSizeFitQuorum --- .../iotdb/db/queryengine/plan/parser/StatementGenerator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 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 45ff470257e6a..68bef30462fc3 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 @@ -510,7 +510,7 @@ public static CreateTimeSeriesStatement createStatement(TSCreateTimeseriesReq re final long startTime = System.nanoTime(); // construct create timeseries statement CreateTimeSeriesStatement statement = new CreateTimeSeriesStatement(); - statement.setPath(DEVICE_PATH_CACHE.getPartialPath(req.path)); + statement.setPath(new PartialPath(req.path)); statement.setDataType(TSDataType.deserialize((byte) req.dataType)); statement.setEncoding(TSEncoding.deserialize((byte) req.encoding)); statement.setCompressor(CompressionType.deserialize((byte) req.compressor)); @@ -557,7 +557,7 @@ public static CreateMultiTimeSeriesStatement createStatement(TSCreateMultiTimese // construct create multi timeseries statement List paths = new ArrayList<>(); for (String path : req.paths) { - paths.add(DEVICE_PATH_CACHE.getPartialPath(path)); + paths.add(new PartialPath(path)); } List dataTypes = new ArrayList<>(); for (Integer dataType : req.dataTypes) {