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

jackietien 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 e85a7eaac69 Fix first_by and last_by with group by in TableModel
e85a7eaac69 is described below

commit e85a7eaac69c82cc059038d4c7f9032cb35fe328
Author: Weihao Li <[email protected]>
AuthorDate: Tue Nov 19 12:19:42 2024 +0800

    Fix first_by and last_by with group by in TableModel
---
 .../it/query/recent/IoTDBTableAggregationIT.java   | 52 ++++++++++++++++++++++
 .../grouped/GroupedFirstByAccumulator.java         |  2 +
 .../grouped/GroupedLastByAccumulator.java          |  1 +
 3 files changed, 55 insertions(+)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBTableAggregationIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBTableAggregationIT.java
index 700d738939e..5ae3ce3862c 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBTableAggregationIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBTableAggregationIT.java
@@ -2080,6 +2080,32 @@ public class IoTDBTableAggregationIT {
         expectedHeader,
         retArray,
         DATABASE_NAME);
+
+    expectedHeader = new String[] {"city", "region", "device_id", "_col3"};
+    retArray =
+        new String[] {
+          "beijing,chaoyang,d09,null,",
+          "beijing,chaoyang,d10,true,",
+          "beijing,chaoyang,d11,null,",
+          "beijing,chaoyang,d12,true,",
+          "beijing,haidian,d13,null,",
+          "beijing,haidian,d14,true,",
+          "beijing,haidian,d15,null,",
+          "beijing,haidian,d16,true,",
+          "shanghai,huangpu,d01,null,",
+          "shanghai,huangpu,d02,true,",
+          "shanghai,huangpu,d03,null,",
+          "shanghai,huangpu,d04,true,",
+          "shanghai,pudong,d05,null,",
+          "shanghai,pudong,d06,true,",
+          "shanghai,pudong,d07,null,",
+          "shanghai,pudong,d08,true,",
+        };
+    tableResultSetEqualTest(
+        "select city,region,device_id,first_by(s5,time,time) from table1 group 
by city,region,device_id order by 1,2,3",
+        expectedHeader,
+        retArray,
+        DATABASE_NAME);
   }
 
   @Test
@@ -2404,6 +2430,32 @@ public class IoTDBTableAggregationIT {
         expectedHeader,
         retArray,
         DATABASE_NAME);
+
+    expectedHeader = new String[] {"city", "region", "device_id", "_col3"};
+    retArray =
+        new String[] {
+          "beijing,chaoyang,d09,null,",
+          "beijing,chaoyang,d10,null,",
+          "beijing,chaoyang,d11,null,",
+          "beijing,chaoyang,d12,null,",
+          "beijing,haidian,d13,null,",
+          "beijing,haidian,d14,null,",
+          "beijing,haidian,d15,null,",
+          "beijing,haidian,d16,null,",
+          "shanghai,huangpu,d01,null,",
+          "shanghai,huangpu,d02,null,",
+          "shanghai,huangpu,d03,null,",
+          "shanghai,huangpu,d04,null,",
+          "shanghai,pudong,d05,null,",
+          "shanghai,pudong,d06,null,",
+          "shanghai,pudong,d07,null,",
+          "shanghai,pudong,d08,null,",
+        };
+    tableResultSetEqualTest(
+        "select city,region,device_id,last_by(s5,time,time) from table1 group 
by city,region,device_id order by 1,2,3",
+        expectedHeader,
+        retArray,
+        DATABASE_NAME);
   }
 
   @Test
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/grouped/GroupedFirstByAccumulator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/grouped/GroupedFirstByAccumulator.java
index 1da754819cf..7c851f5949e 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/grouped/GroupedFirstByAccumulator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/grouped/GroupedFirstByAccumulator.java
@@ -91,6 +91,7 @@ public class GroupedFirstByAccumulator implements 
GroupedAccumulator {
         break;
       case BOOLEAN:
         xBooleanValues = new BooleanBigArray();
+        break;
       default:
         throw new UnSupportedDataTypeException(
             String.format("Unsupported data type : %s", xDataType));
@@ -195,6 +196,7 @@ public class GroupedFirstByAccumulator implements 
GroupedAccumulator {
         break;
       case BOOLEAN:
         xBooleanValues.reset();
+        break;
       default:
         throw new UnSupportedDataTypeException(
             String.format("Unsupported data type : %s", xDataType));
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/grouped/GroupedLastByAccumulator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/grouped/GroupedLastByAccumulator.java
index f93a20f66e3..b40cc21e5f5 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/grouped/GroupedLastByAccumulator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/grouped/GroupedLastByAccumulator.java
@@ -196,6 +196,7 @@ public class GroupedLastByAccumulator implements 
GroupedAccumulator {
         break;
       case BOOLEAN:
         xBooleanValues.reset();
+        break;
       default:
         throw new UnSupportedDataTypeException(
             String.format("Unsupported data type : %s", xDataType));

Reply via email to