You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by hu...@apache.org on 2023/05/14 12:41:45 UTC

[iotdb] branch lmh/fixSelectInto1.1 created (now c1114b6d808)

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

hui pushed a change to branch lmh/fixSelectInto1.1
in repository https://gitbox.apache.org/repos/asf/iotdb.git


      at c1114b6d808 [IOTDB-5837] Fix exception in select-into of ALIGN BY DEVICE query

This branch includes the following new commits:

     new c1114b6d808 [IOTDB-5837] Fix exception in select-into of ALIGN BY DEVICE query

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: [IOTDB-5837] Fix exception in select-into of ALIGN BY DEVICE query

Posted by hu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hui pushed a commit to branch lmh/fixSelectInto1.1
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit c1114b6d8088c71dd81405440f028c9389bb3cbd
Author: liuminghui233 <36...@users.noreply.github.com>
AuthorDate: Mon May 8 11:42:08 2023 +0800

    [IOTDB-5837] Fix exception in select-into of ALIGN BY DEVICE query
    
    (cherry picked from commit 6118e6cec6b6b1e6e48f07860cb4dbc824ae7a67)
---
 .../iotdb/db/it/selectinto/IoTDBSelectIntoIT.java  | 30 ++++++++++++++++++++++
 .../operator/process/DeviceViewIntoOperator.java   |  6 ++++-
 2 files changed, 35 insertions(+), 1 deletion(-)

diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoIT.java
index 3712ce3b9bf..c9d865128f7 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoIT.java
@@ -483,6 +483,36 @@ public class IoTDBSelectIntoIT {
         "select k1, k2, k3 from root.sg_abd_expr.*;", expectedQueryHeader, queryRetArray);
   }
 
+  @Test
+  public void testExpressionAlignByDevice2() {
+    String[] intoRetArray =
+        new String[] {
+          "root.sg.d1,avg(s1),root.agg_expr.d1.avg_s1,1,",
+          "root.sg.d1,sum(s1) + sum(s1),root.agg_expr.d1.sum_s1_add_s1,1,",
+          "root.sg.d1,count(s2),root.agg_expr.d1.count_s2,1,",
+          "root.sg.d2,avg(s1),root.agg_expr.d2.avg_s1,1,",
+          "root.sg.d2,sum(s1) + sum(s1),root.agg_expr.d2.sum_s1_add_s1,1,",
+          "root.sg.d2,count(s2),root.agg_expr.d2.count_s2,1,",
+        };
+    resultSetEqualTest(
+        "select avg(s1), sum(s1) + sum(s1), count(s2)"
+            + " into root.agg_expr.${2}(avg_s1, sum_s1_add_s1, count_s2)"
+            + " from root.sg.d1, root.sg.d2 align by device;",
+        selectIntoAlignByDeviceHeader, intoRetArray);
+
+    String expectedQueryHeader =
+        "Time,root.agg_expr.d1.avg_s1,root.agg_expr.d2.avg_s1,root.agg_expr.d1.sum_s1_add_s1,"
+            + "root.agg_expr.d2.sum_s1_add_s1,root.agg_expr.d1.count_s2,root.agg_expr.d2.count_s2,";
+    String[] queryRetArray =
+        new String[] {
+          "0,6.5,6.428571428571429,130.0,90.0,9,8,",
+        };
+    resultSetEqualTest(
+        "select avg_s1, sum_s1_add_s1, count_s2 from root.agg_expr.*;",
+        expectedQueryHeader,
+        queryRetArray);
+  }
+
   // -------------------------------------- CHECK EXCEPTION -------------------------------------
 
   @Test
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/DeviceViewIntoOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/DeviceViewIntoOperator.java
index 5f2d2022192..32a0959d80f 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/DeviceViewIntoOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/DeviceViewIntoOperator.java
@@ -49,6 +49,7 @@ public class DeviceViewIntoOperator extends AbstractIntoOperator {
   private final Map<String, Boolean> targetDeviceToAlignedMap;
   private final Map<String, List<Pair<String, PartialPath>>> deviceToSourceTargetPathPairListMap;
 
+  private final int deviceColumnIndex;
   private String currentDevice;
 
   private final TsBlockBuilder resultTsBlockBuilder;
@@ -82,6 +83,9 @@ public class DeviceViewIntoOperator extends AbstractIntoOperator {
             .map(ColumnHeader::getColumnType)
             .collect(Collectors.toList());
     this.resultTsBlockBuilder = new TsBlockBuilder(outputDataTypes);
+
+    this.deviceColumnIndex =
+        sourceColumnToInputLocationMap.get(ColumnHeaderConstant.DEVICE).getValueColumnIndex();
   }
 
   @Override
@@ -90,7 +94,7 @@ public class DeviceViewIntoOperator extends AbstractIntoOperator {
       return true;
     }
 
-    String device = String.valueOf(inputTsBlock.getValueColumns()[0].getBinary(0));
+    String device = String.valueOf(inputTsBlock.getValueColumns()[deviceColumnIndex].getBinary(0));
     if (!Objects.equals(device, currentDevice)) {
       InsertMultiTabletsStatement insertMultiTabletsStatement =
           constructInsertMultiTabletsStatement(false);