You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2022/11/26 03:37:48 UTC
[iotdb] 01/01: Optimize insert statement generate
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch opt_statement_gen
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 36b02c3dff8041d10b1ec84571e73e4270b64bbe
Author: HTHou <hh...@outlook.com>
AuthorDate: Sat Nov 26 11:37:34 2022 +0800
Optimize insert statement generate
---
.../iotdb/db/mpp/plan/parser/StatementGenerator.java | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/StatementGenerator.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/StatementGenerator.java
index bd85626786..4bfa181f63 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/StatementGenerator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/StatementGenerator.java
@@ -232,9 +232,12 @@ public class StatementGenerator {
// construct insert statement
InsertMultiTabletsStatement insertStatement = new InsertMultiTabletsStatement();
List<InsertTabletStatement> insertTabletStatementList = new ArrayList<>();
+ Map<String, PartialPath> devicePathMap = new HashMap<>();
for (int i = 0; i < req.prefixPaths.size(); i++) {
InsertTabletStatement insertTabletStatement = new InsertTabletStatement();
- insertTabletStatement.setDevicePath(new PartialPath(req.prefixPaths.get(i)));
+ insertTabletStatement.setDevicePath(
+ devicePathMap.putIfAbsent(
+ req.getPrefixPaths().get(i), new PartialPath(req.getPrefixPaths().get(i))));
insertTabletStatement.setMeasurements(req.measurementsList.get(i).toArray(new String[0]));
insertTabletStatement.setTimes(
QueryDataSetUtils.readTimesFromBuffer(req.timestampsList.get(i), req.sizeList.get(i)));
@@ -270,9 +273,12 @@ public class StatementGenerator {
// construct insert statement
InsertRowsStatement insertStatement = new InsertRowsStatement();
List<InsertRowStatement> insertRowStatementList = new ArrayList<>();
+ Map<String, PartialPath> devicePathMap = new HashMap<>();
for (int i = 0; i < req.prefixPaths.size(); i++) {
InsertRowStatement statement = new InsertRowStatement();
- statement.setDevicePath(new PartialPath(req.getPrefixPaths().get(i)));
+ statement.setDevicePath(
+ devicePathMap.putIfAbsent(
+ req.getPrefixPaths().get(i), new PartialPath(req.getPrefixPaths().get(i))));
statement.setMeasurements(req.getMeasurementsList().get(i).toArray(new String[0]));
statement.setTime(req.getTimestamps().get(i));
statement.fillValues(req.valuesList.get(i));
@@ -292,9 +298,12 @@ public class StatementGenerator {
// construct insert statement
InsertRowsStatement insertStatement = new InsertRowsStatement();
List<InsertRowStatement> insertRowStatementList = new ArrayList<>();
+ Map<String, PartialPath> devicePathMap = new HashMap<>();
for (int i = 0; i < req.prefixPaths.size(); i++) {
InsertRowStatement statement = new InsertRowStatement();
- statement.setDevicePath(new PartialPath(req.getPrefixPaths().get(i)));
+ statement.setDevicePath(
+ devicePathMap.putIfAbsent(
+ req.getPrefixPaths().get(i), new PartialPath(req.getPrefixPaths().get(i))));
addMeasurementAndValue(
statement, req.getMeasurementsList().get(i), req.getValuesList().get(i));
statement.setDataTypes(new TSDataType[statement.getMeasurements().length]);