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:47 UTC

[iotdb] branch opt_statement_gen created (now 36b02c3dff)

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

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


      at 36b02c3dff Optimize insert statement generate

This branch includes the following new commits:

     new 36b02c3dff Optimize insert statement generate

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[iotdb] 01/01: Optimize insert statement generate

Posted by ha...@apache.org.
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]);