You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2024/10/17 06:30:43 UTC
(iotdb) branch ty/1016 created (now 64d7adc8eec)
This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a change to branch ty/1016
in repository https://gitbox.apache.org/repos/asf/iotdb.git
at 64d7adc8eec Add some ITs
This branch includes the following new commits:
new 48c695325ce change tsfile version
new 01f15bab758 add more sort elimination cases
new f9056e8bb10 Add IT for agg
new 8074313d8ac Merge remote-tracking branch 'origin/master' into ty/1016
new 64d7adc8eec Add some ITs
The 5 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) 03/05: Add IT for agg
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch ty/1016
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit f9056e8bb1065756f5fb6dc38ae50d0fcfb3db02
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Thu Oct 17 10:22:16 2024 +0800
Add IT for agg
---
.../it/query/recent/IoTDBTableAggregationIT.java | 639 +++++++++++++++++++++
.../distribute/TableDistributedPlanGenerator.java | 43 +-
2 files changed, 667 insertions(+), 15 deletions(-)
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 c7906e5de46..2aae766fec8 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
@@ -148,5 +148,644 @@ public class IoTDBTableAggregationIT {
expectedHeader,
retArray,
DATABASE_NAME);
+
+ expectedHeader = new String[] {"_col0", "province", "city", "region", "device_id", "_col5"};
+ retArray =
+ new String[] {
+ "2024-09-24T06:15:30.000Z,beijing,beijing,chaoyang,d09,1,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,chaoyang,d09,1,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,chaoyang,d09,1,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,chaoyang,d09,1,",
+ "2024-09-24T06:15:55.000Z,beijing,beijing,chaoyang,d09,1,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,chaoyang,d10,1,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,chaoyang,d10,1,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,chaoyang,d10,1,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,chaoyang,d11,1,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,chaoyang,d11,1,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,chaoyang,d11,1,",
+ "2024-09-24T06:15:45.000Z,beijing,beijing,chaoyang,d11,1,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,chaoyang,d11,1,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,chaoyang,d12,1,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,chaoyang,d12,1,",
+ "2024-09-24T06:15:55.000Z,beijing,beijing,chaoyang,d12,1,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,haidian,d13,1,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,haidian,d13,1,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,haidian,d13,1,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,haidian,d13,1,",
+ "2024-09-24T06:15:55.000Z,beijing,beijing,haidian,d13,1,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,haidian,d14,1,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,haidian,d14,1,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,haidian,d14,1,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,haidian,d15,1,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,haidian,d15,1,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,haidian,d15,1,",
+ "2024-09-24T06:15:45.000Z,beijing,beijing,haidian,d15,1,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,haidian,d15,1,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,haidian,d16,1,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,haidian,d16,1,",
+ "2024-09-24T06:15:55.000Z,beijing,beijing,haidian,d16,1,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,huangpu,d01,1,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,huangpu,d01,1,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,huangpu,d01,1,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,huangpu,d01,1,",
+ "2024-09-24T06:15:55.000Z,shanghai,shanghai,huangpu,d01,1,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,huangpu,d02,1,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,huangpu,d02,1,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,huangpu,d02,1,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,huangpu,d03,1,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,huangpu,d03,1,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,huangpu,d03,1,",
+ "2024-09-24T06:15:45.000Z,shanghai,shanghai,huangpu,d03,1,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,huangpu,d03,1,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,huangpu,d04,1,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,huangpu,d04,1,",
+ "2024-09-24T06:15:55.000Z,shanghai,shanghai,huangpu,d04,1,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,pudong,d05,1,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,pudong,d05,1,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,pudong,d05,1,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,pudong,d05,1,",
+ "2024-09-24T06:15:55.000Z,shanghai,shanghai,pudong,d05,1,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,pudong,d06,1,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,pudong,d06,1,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,pudong,d06,1,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,pudong,d07,1,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,pudong,d07,1,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,pudong,d07,1,",
+ "2024-09-24T06:15:45.000Z,shanghai,shanghai,pudong,d07,1,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,pudong,d07,1,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,pudong,d08,1,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,pudong,d08,1,",
+ "2024-09-24T06:15:55.000Z,shanghai,shanghai,pudong,d08,1,",
+ };
+ tableResultSetEqualTest(
+ "select date_bin(5s, time),province,city,region,device_id, count(*) from table1 group by 1,2,3,4,5 order by 2,3,4,5,1",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader =
+ new String[] {
+ "_col0",
+ "province",
+ "city",
+ "region",
+ "device_id",
+ "_col5",
+ "_col6",
+ "_col7",
+ "_col8",
+ "_col9",
+ "_col10",
+ "_col11",
+ "_col12",
+ "_col13",
+ "_col14"
+ };
+ retArray =
+ new String[] {
+ "2024-09-24T06:15:30.000Z,beijing,beijing,chaoyang,d09,1,0,1,0,0,1,0,1,1,0,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,chaoyang,d09,0,1,1,1,0,1,1,0,1,1,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,chaoyang,d09,1,0,1,0,1,0,1,0,1,0,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,chaoyang,d09,0,1,0,0,1,0,0,0,1,1,",
+ "2024-09-24T06:15:55.000Z,beijing,beijing,chaoyang,d09,1,0,0,1,0,0,0,1,1,0,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,chaoyang,d10,1,0,0,0,1,1,1,0,1,0,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,chaoyang,d10,1,0,0,1,0,0,1,0,1,1,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,chaoyang,d10,0,1,0,0,0,0,1,1,1,0,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,chaoyang,d11,0,1,0,0,0,0,0,1,1,0,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,chaoyang,d11,1,0,0,1,0,0,1,0,1,1,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,chaoyang,d11,1,0,1,0,1,1,0,1,1,0,",
+ "2024-09-24T06:15:45.000Z,beijing,beijing,chaoyang,d11,0,1,0,1,0,0,1,0,1,0,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,chaoyang,d11,0,0,1,0,0,1,0,0,1,0,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,chaoyang,d12,0,0,1,0,1,0,1,0,1,1,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,chaoyang,d12,0,1,0,0,0,0,0,0,1,0,",
+ "2024-09-24T06:15:55.000Z,beijing,beijing,chaoyang,d12,1,0,0,1,0,1,0,1,1,0,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,haidian,d13,1,0,1,0,0,1,0,1,1,0,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,haidian,d13,0,1,1,1,0,1,1,0,1,1,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,haidian,d13,1,0,1,0,1,0,1,0,1,0,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,haidian,d13,0,1,0,0,1,0,0,0,1,1,",
+ "2024-09-24T06:15:55.000Z,beijing,beijing,haidian,d13,1,0,0,1,0,0,0,1,1,0,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,haidian,d14,1,0,0,0,1,1,1,0,1,0,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,haidian,d14,1,0,0,1,0,0,1,0,1,1,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,haidian,d14,0,1,0,0,0,0,1,1,1,0,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,haidian,d15,0,1,0,0,0,0,0,1,1,0,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,haidian,d15,1,0,0,1,0,0,1,0,1,1,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,haidian,d15,1,0,1,0,1,1,0,1,1,0,",
+ "2024-09-24T06:15:45.000Z,beijing,beijing,haidian,d15,0,1,0,1,0,0,1,0,1,0,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,haidian,d15,0,0,1,0,0,1,0,0,1,0,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,haidian,d16,0,0,1,0,1,0,1,0,1,1,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,haidian,d16,0,1,0,0,0,0,0,0,1,0,",
+ "2024-09-24T06:15:55.000Z,beijing,beijing,haidian,d16,1,0,0,1,0,1,0,1,1,0,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,huangpu,d01,1,0,1,0,0,1,0,1,1,0,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,huangpu,d01,0,1,1,1,0,1,1,0,1,1,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,huangpu,d01,1,0,1,0,1,0,1,0,1,0,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,huangpu,d01,0,1,0,0,1,0,0,0,1,1,",
+ "2024-09-24T06:15:55.000Z,shanghai,shanghai,huangpu,d01,1,0,0,1,0,0,0,1,1,0,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,huangpu,d02,1,0,0,0,1,1,1,0,1,0,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,huangpu,d02,1,0,0,1,0,0,1,0,1,1,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,huangpu,d02,0,1,0,0,0,0,1,1,1,0,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,huangpu,d03,0,1,0,0,0,0,0,1,1,0,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,huangpu,d03,1,0,0,1,0,0,1,0,1,1,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,huangpu,d03,1,0,1,0,1,1,0,1,1,0,",
+ "2024-09-24T06:15:45.000Z,shanghai,shanghai,huangpu,d03,0,1,0,1,0,0,1,0,1,0,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,huangpu,d03,0,0,1,0,0,1,0,0,1,0,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,huangpu,d04,0,0,1,0,1,0,1,0,1,1,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,huangpu,d04,0,1,0,0,0,0,0,0,1,0,",
+ "2024-09-24T06:15:55.000Z,shanghai,shanghai,huangpu,d04,1,0,0,1,0,1,0,1,1,0,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,pudong,d05,1,0,1,0,0,1,0,1,1,0,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,pudong,d05,0,1,1,1,0,1,1,0,1,1,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,pudong,d05,1,0,1,0,1,0,1,0,1,0,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,pudong,d05,0,1,0,0,1,0,0,0,1,1,",
+ "2024-09-24T06:15:55.000Z,shanghai,shanghai,pudong,d05,1,0,0,1,0,0,0,1,1,0,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,pudong,d06,1,0,0,0,1,1,1,0,1,0,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,pudong,d06,1,0,0,1,0,0,1,0,1,1,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,pudong,d06,0,1,0,0,0,0,1,1,1,0,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,pudong,d07,0,1,0,0,0,0,0,1,1,0,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,pudong,d07,1,0,0,1,0,0,1,0,1,1,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,pudong,d07,1,0,1,0,1,1,0,1,1,0,",
+ "2024-09-24T06:15:45.000Z,shanghai,shanghai,pudong,d07,0,1,0,1,0,0,1,0,1,0,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,pudong,d07,0,0,1,0,0,1,0,0,1,0,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,pudong,d08,0,0,1,0,1,0,1,0,1,1,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,pudong,d08,0,1,0,0,0,0,0,0,1,0,",
+ "2024-09-24T06:15:55.000Z,shanghai,shanghai,pudong,d08,1,0,0,1,0,1,0,1,1,0,",
+ };
+ tableResultSetEqualTest(
+ "select date_bin(5s, time),province,city,region,device_id, count(s1), count(s2), count(s3), count(s4), count(s5), count(s6), count(s7), count(s8), count(s9), count(s10) from table1 group by 1,2,3,4,5 order by 2,3,4,5,1",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader =
+ new String[] {
+ "province",
+ "city",
+ "region",
+ "device_id",
+ "_col4",
+ "_col5",
+ "_col6",
+ "_col7",
+ "_col8",
+ "_col9",
+ "_col10",
+ "_col11",
+ "_col12",
+ "_col13"
+ };
+ retArray =
+ new String[] {
+ "beijing,beijing,chaoyang,d09,3,2,3,2,2,2,2,2,5,2,",
+ "beijing,beijing,chaoyang,d10,2,1,0,1,1,1,3,1,3,1,",
+ "beijing,beijing,chaoyang,d11,2,2,2,2,1,2,2,2,5,1,",
+ "beijing,beijing,chaoyang,d12,1,1,1,1,1,1,1,1,3,1,",
+ "beijing,beijing,haidian,d13,3,2,3,2,2,2,2,2,5,2,",
+ "beijing,beijing,haidian,d14,2,1,0,1,1,1,3,1,3,1,",
+ "beijing,beijing,haidian,d15,2,2,2,2,1,2,2,2,5,1,",
+ "beijing,beijing,haidian,d16,1,1,1,1,1,1,1,1,3,1,",
+ "shanghai,shanghai,huangpu,d01,3,2,3,2,2,2,2,2,5,2,",
+ "shanghai,shanghai,huangpu,d02,2,1,0,1,1,1,3,1,3,1,",
+ "shanghai,shanghai,huangpu,d03,2,2,2,2,1,2,2,2,5,1,",
+ "shanghai,shanghai,huangpu,d04,1,1,1,1,1,1,1,1,3,1,",
+ "shanghai,shanghai,pudong,d05,3,2,3,2,2,2,2,2,5,2,",
+ "shanghai,shanghai,pudong,d06,2,1,0,1,1,1,3,1,3,1,",
+ "shanghai,shanghai,pudong,d07,2,2,2,2,1,2,2,2,5,1,",
+ "shanghai,shanghai,pudong,d08,1,1,1,1,1,1,1,1,3,1,",
+ };
+ tableResultSetEqualTest(
+ "select province,city,region,device_id, count(s1), count(s2), count(s3), count(s4), count(s5), count(s6), count(s7), count(s8), count(s9), count(s10) from table1 group by 1,2,3,4 order by 1,2,3,4",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"province", "city", "region", "device_id", "_col4"};
+ retArray =
+ new String[] {
+ "beijing,beijing,chaoyang,d09,5,",
+ "beijing,beijing,chaoyang,d10,3,",
+ "beijing,beijing,chaoyang,d11,5,",
+ "beijing,beijing,chaoyang,d12,3,",
+ "beijing,beijing,haidian,d13,5,",
+ "beijing,beijing,haidian,d14,3,",
+ "beijing,beijing,haidian,d15,5,",
+ "beijing,beijing,haidian,d16,3,",
+ "shanghai,shanghai,huangpu,d01,5,",
+ "shanghai,shanghai,huangpu,d02,3,",
+ "shanghai,shanghai,huangpu,d03,5,",
+ "shanghai,shanghai,huangpu,d04,3,",
+ "shanghai,shanghai,pudong,d05,5,",
+ "shanghai,shanghai,pudong,d06,3,",
+ "shanghai,shanghai,pudong,d07,5,",
+ "shanghai,shanghai,pudong,d08,3,",
+ };
+ tableResultSetEqualTest(
+ "select province,city,region,device_id,count(*) from table1 group by 1,2,3,4 order by 1,2,3,4",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"province", "city", "region", "_col3"};
+ retArray =
+ new String[] {
+ "beijing,beijing,chaoyang,16,",
+ "beijing,beijing,haidian,16,",
+ "shanghai,shanghai,huangpu,16,",
+ "shanghai,shanghai,pudong,16,",
+ };
+ tableResultSetEqualTest(
+ "select province,city,region,count(*) from table1 group by 1,2,3 order by 1,2,3",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"province", "city", "_col2"};
+ retArray =
+ new String[] {
+ "beijing,beijing,32,", "shanghai,shanghai,32,",
+ };
+ tableResultSetEqualTest(
+ "select province,city,count(*) from table1 group by 1,2 order by 1,2",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"province", "_col1"};
+ retArray =
+ new String[] {
+ "beijing,32,", "shanghai,32,",
+ };
+ tableResultSetEqualTest(
+ "select province,count(*) from table1 group by 1 order by 1",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"_col0"};
+ retArray =
+ new String[] {
+ "64,",
+ };
+ tableResultSetEqualTest(
+ "select count(*) from table1;", expectedHeader, retArray, DATABASE_NAME);
+ }
+
+ @Ignore
+ @Test
+ public void avgTest() {
+ String[] expectedHeader = new String[] {"device_id", "color", "type", "_col3"};
+ String[] retArray =
+ new String[] {
+ "d01,red,A,45.0",
+ };
+ tableResultSetEqualTest(
+ "select device_id, color, type, avg(s4) from table1 where time >= 2024-09-24T06:15:30.000+00:00 and time <= 2024-09-24T06:15:59.999+00:00 and device_id = 'd01' group by device_id, color, type",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"_col0", "end_time", "device_id", "_col3"};
+ retArray =
+ new String[] {
+ "d01,red,A,55.0",
+ };
+ tableResultSetEqualTest(
+ "select device_id, color, type, avg(s4) from table1 where time >= 2024-09-24T06:15:30.000+00:00 and time <= 2024-09-24T06:15:59.999+00:00 and device_id = 'd01' and s1 >= 40 group by device_id, color, type",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"_col0", "device_id", "_col2"};
+ retArray =
+ new String[] {
+ "2024-09-24T06:15:30.000Z,d01,30.0,",
+ "2024-09-24T06:15:35.000Z,d01,35.0,",
+ "2024-09-24T06:15:40.000Z,d01,40.0,",
+ "2024-09-24T06:15:50.000Z,d01,null,",
+ "2024-09-24T06:15:55.000Z,d01,null,",
+ };
+ tableResultSetEqualTest(
+ "select date_bin(5s, time), device_id, avg(s3) from table1 where device_id = 'd01' group by 1, 2",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"_col0", "province", "city", "region", "device_id", "_col5"};
+ retArray =
+ new String[] {
+ "2024-09-24T06:15:30.000Z,beijing,beijing,chaoyang,d09,null,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,chaoyang,d09,35.0,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,chaoyang,d09,null,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,chaoyang,d09,null,",
+ "2024-09-24T06:15:55.000Z,beijing,beijing,chaoyang,d09,55.0,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,chaoyang,d10,null,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,chaoyang,d10,40.0,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,chaoyang,d10,null,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,chaoyang,d11,null,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,chaoyang,d11,36.0,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,chaoyang,d11,null,",
+ "2024-09-24T06:15:45.000Z,beijing,beijing,chaoyang,d11,46.0,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,chaoyang,d11,null,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,chaoyang,d12,null,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,chaoyang,d12,null,",
+ "2024-09-24T06:15:55.000Z,beijing,beijing,chaoyang,d12,55.0,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,haidian,d13,null,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,haidian,d13,35.0,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,haidian,d13,null,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,haidian,d13,null,",
+ "2024-09-24T06:15:55.000Z,beijing,beijing,haidian,d13,55.0,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,haidian,d14,null,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,haidian,d14,40.0,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,haidian,d14,null,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,haidian,d15,null,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,haidian,d15,36.0,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,haidian,d15,null,",
+ "2024-09-24T06:15:45.000Z,beijing,beijing,haidian,d15,46.0,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,haidian,d15,null,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,haidian,d16,null,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,haidian,d16,null,",
+ "2024-09-24T06:15:55.000Z,beijing,beijing,haidian,d16,55.0,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,huangpu,d01,null,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,huangpu,d01,35.0,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,huangpu,d01,null,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,huangpu,d01,null,",
+ "2024-09-24T06:15:55.000Z,shanghai,shanghai,huangpu,d01,55.0,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,huangpu,d02,null,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,huangpu,d02,40.0,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,huangpu,d02,null,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,huangpu,d03,null,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,huangpu,d03,36.0,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,huangpu,d03,null,",
+ "2024-09-24T06:15:45.000Z,shanghai,shanghai,huangpu,d03,46.0,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,huangpu,d03,null,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,huangpu,d04,null,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,huangpu,d04,null,",
+ "2024-09-24T06:15:55.000Z,shanghai,shanghai,huangpu,d04,55.0,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,pudong,d05,null,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,pudong,d05,35.0,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,pudong,d05,null,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,pudong,d05,null,",
+ "2024-09-24T06:15:55.000Z,shanghai,shanghai,pudong,d05,55.0,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,pudong,d06,null,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,pudong,d06,40.0,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,pudong,d06,null,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,pudong,d07,null,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,pudong,d07,36.0,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,pudong,d07,null,",
+ "2024-09-24T06:15:45.000Z,shanghai,shanghai,pudong,d07,46.0,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,pudong,d07,null,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,pudong,d08,null,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,pudong,d08,null,",
+ "2024-09-24T06:15:55.000Z,shanghai,shanghai,pudong,d08,55.0,",
+ };
+ tableResultSetEqualTest(
+ "select date_bin(5s, time),province,city,region,device_id, avg(s4) from table1 group by 1,2,3,4,5 order by 2,3,4,5,1",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"province", "city", "region", "device_id", "_col4"};
+ retArray =
+ new String[] {
+ "beijing,beijing,chaoyang,d09,42500.0,",
+ "beijing,beijing,chaoyang,d10,50000.0,",
+ "beijing,beijing,chaoyang,d11,38500.0,",
+ "beijing,beijing,chaoyang,d12,40000.0,",
+ "beijing,beijing,haidian,d13,42500.0,",
+ "beijing,beijing,haidian,d14,50000.0,",
+ "beijing,beijing,haidian,d15,38500.0,",
+ "beijing,beijing,haidian,d16,40000.0,",
+ "shanghai,shanghai,huangpu,d01,42500.0,",
+ "shanghai,shanghai,huangpu,d02,50000.0,",
+ "shanghai,shanghai,huangpu,d03,38500.0,",
+ "shanghai,shanghai,huangpu,d04,40000.0,",
+ "shanghai,shanghai,pudong,d05,42500.0,",
+ "shanghai,shanghai,pudong,d06,50000.0,",
+ "shanghai,shanghai,pudong,d07,38500.0,",
+ "shanghai,shanghai,pudong,d08,40000.0,",
+ };
+ tableResultSetEqualTest(
+ "select province,city,region,device_id, avg(s2) from table1 group by 1,2,3,4 order by 1,2,3,4",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"province", "city", "region", "_col3"};
+ retArray =
+ new String[] {
+ "beijing,beijing,chaoyang,44.5,",
+ "beijing,beijing,haidian,44.5,",
+ "shanghai,shanghai,huangpu,44.5,",
+ "shanghai,shanghai,pudong,44.5,",
+ };
+ tableResultSetEqualTest(
+ "select province,city,region,avg(s4) from table1 group by 1,2,3 order by 1,2,3",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"province", "city", "_col2"};
+ retArray =
+ new String[] {
+ "beijing,beijing,44.5,", "shanghai,shanghai,44.5,",
+ };
+ tableResultSetEqualTest(
+ "select province,city,avg(s4) from table1 group by 1,2 order by 1,2",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"province", "_col1"};
+ retArray =
+ new String[] {
+ "beijing,44.5,", "shanghai,44.5,",
+ };
+ tableResultSetEqualTest(
+ "select province,avg(s4) from table1 group by 1 order by 1",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"_col0"};
+ retArray = new String[] {"44.5,"};
+ tableResultSetEqualTest("select avg(s4) from table1;", expectedHeader, retArray, DATABASE_NAME);
+ }
+
+ @Ignore
+ @Test
+ public void sumTest() {
+ String[] expectedHeader = new String[] {"device_id", "color", "type", "_col3"};
+ String[] retArray =
+ new String[] {
+ "d01,red,A,90.0",
+ };
+ tableResultSetEqualTest(
+ "select device_id, color, type, sum(s4) from table1 where time >= 2024-09-24T06:15:30.000+00:00 and time <= 2024-09-24T06:15:59.999+00:00 and device_id = 'd01' group by device_id, color, type",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"_col0", "end_time", "device_id", "_col3"};
+ retArray =
+ new String[] {
+ "d01,red,A,55.0",
+ };
+ tableResultSetEqualTest(
+ "select device_id, color, type, sum(s4) from table1 where time >= 2024-09-24T06:15:30.000+00:00 and time <= 2024-09-24T06:15:59.999+00:00 and device_id = 'd01' and s1 >= 40 group by device_id, color, type",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"_col0", "device_id", "_col2"};
+ retArray =
+ new String[] {
+ "2024-09-24T06:15:30.000Z,d01,30.0,",
+ "2024-09-24T06:15:35.000Z,d01,35.0,",
+ "2024-09-24T06:15:40.000Z,d01,40.0,",
+ "2024-09-24T06:15:50.000Z,d01,null,",
+ "2024-09-24T06:15:55.000Z,d01,null,",
+ };
+ tableResultSetEqualTest(
+ "select date_bin(5s, time), device_id, sum(s3) from table1 where device_id = 'd01' group by 1, 2",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"_col0", "province", "city", "region", "device_id", "_col5"};
+ retArray =
+ new String[] {
+ "2024-09-24T06:15:30.000Z,beijing,beijing,chaoyang,d09,null,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,chaoyang,d09,35.0,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,chaoyang,d09,null,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,chaoyang,d09,null,",
+ "2024-09-24T06:15:55.000Z,beijing,beijing,chaoyang,d09,55.0,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,chaoyang,d10,null,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,chaoyang,d10,40.0,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,chaoyang,d10,null,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,chaoyang,d11,null,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,chaoyang,d11,36.0,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,chaoyang,d11,null,",
+ "2024-09-24T06:15:45.000Z,beijing,beijing,chaoyang,d11,46.0,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,chaoyang,d11,null,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,chaoyang,d12,null,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,chaoyang,d12,null,",
+ "2024-09-24T06:15:55.000Z,beijing,beijing,chaoyang,d12,55.0,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,haidian,d13,null,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,haidian,d13,35.0,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,haidian,d13,null,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,haidian,d13,null,",
+ "2024-09-24T06:15:55.000Z,beijing,beijing,haidian,d13,55.0,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,haidian,d14,null,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,haidian,d14,40.0,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,haidian,d14,null,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,haidian,d15,null,",
+ "2024-09-24T06:15:35.000Z,beijing,beijing,haidian,d15,36.0,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,haidian,d15,null,",
+ "2024-09-24T06:15:45.000Z,beijing,beijing,haidian,d15,46.0,",
+ "2024-09-24T06:15:50.000Z,beijing,beijing,haidian,d15,null,",
+ "2024-09-24T06:15:30.000Z,beijing,beijing,haidian,d16,null,",
+ "2024-09-24T06:15:40.000Z,beijing,beijing,haidian,d16,null,",
+ "2024-09-24T06:15:55.000Z,beijing,beijing,haidian,d16,55.0,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,huangpu,d01,null,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,huangpu,d01,35.0,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,huangpu,d01,null,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,huangpu,d01,null,",
+ "2024-09-24T06:15:55.000Z,shanghai,shanghai,huangpu,d01,55.0,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,huangpu,d02,null,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,huangpu,d02,40.0,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,huangpu,d02,null,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,huangpu,d03,null,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,huangpu,d03,36.0,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,huangpu,d03,null,",
+ "2024-09-24T06:15:45.000Z,shanghai,shanghai,huangpu,d03,46.0,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,huangpu,d03,null,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,huangpu,d04,null,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,huangpu,d04,null,",
+ "2024-09-24T06:15:55.000Z,shanghai,shanghai,huangpu,d04,55.0,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,pudong,d05,null,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,pudong,d05,35.0,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,pudong,d05,null,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,pudong,d05,null,",
+ "2024-09-24T06:15:55.000Z,shanghai,shanghai,pudong,d05,55.0,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,pudong,d06,null,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,pudong,d06,40.0,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,pudong,d06,null,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,pudong,d07,null,",
+ "2024-09-24T06:15:35.000Z,shanghai,shanghai,pudong,d07,36.0,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,pudong,d07,null,",
+ "2024-09-24T06:15:45.000Z,shanghai,shanghai,pudong,d07,46.0,",
+ "2024-09-24T06:15:50.000Z,shanghai,shanghai,pudong,d07,null,",
+ "2024-09-24T06:15:30.000Z,shanghai,shanghai,pudong,d08,null,",
+ "2024-09-24T06:15:40.000Z,shanghai,shanghai,pudong,d08,null,",
+ "2024-09-24T06:15:55.000Z,shanghai,shanghai,pudong,d08,55.0,",
+ };
+ tableResultSetEqualTest(
+ "select date_bin(5s, time),province,city,region,device_id, sum(s4) from table1 group by 1,2,3,4,5 order by 2,3,4,5,1",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"province", "city", "region", "device_id", "_col4"};
+ retArray =
+ new String[] {
+ "beijing,beijing,chaoyang,d09,85000.0,",
+ "beijing,beijing,chaoyang,d10,50000.0,",
+ "beijing,beijing,chaoyang,d11,77000.0,",
+ "beijing,beijing,chaoyang,d12,40000.0,",
+ "beijing,beijing,haidian,d13,85000.0,",
+ "beijing,beijing,haidian,d14,50000.0,",
+ "beijing,beijing,haidian,d15,77000.0,",
+ "beijing,beijing,haidian,d16,40000.0,",
+ "shanghai,shanghai,huangpu,d01,85000.0,",
+ "shanghai,shanghai,huangpu,d02,50000.0,",
+ "shanghai,shanghai,huangpu,d03,77000.0,",
+ "shanghai,shanghai,huangpu,d04,40000.0,",
+ "shanghai,shanghai,pudong,d05,85000.0,",
+ "shanghai,shanghai,pudong,d06,50000.0,",
+ "shanghai,shanghai,pudong,d07,77000.0,",
+ "shanghai,shanghai,pudong,d08,40000.0,",
+ };
+ tableResultSetEqualTest(
+ "select province,city,region,device_id, sum(s2) from table1 group by 1,2,3,4 order by 1,2,3,4",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"province", "city", "region", "_col3"};
+ retArray =
+ new String[] {
+ "beijing,beijing,chaoyang,267.0,",
+ "beijing,beijing,haidian,267.0,",
+ "shanghai,shanghai,huangpu,267.0,",
+ "shanghai,shanghai,pudong,267.0,",
+ };
+ tableResultSetEqualTest(
+ "select province,city,region,sum(s4) from table1 group by 1,2,3 order by 1,2,3",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"province", "city", "_col2"};
+ retArray =
+ new String[] {
+ "beijing,beijing,534.0,", "shanghai,shanghai,534.0,",
+ };
+ tableResultSetEqualTest(
+ "select province,city,sum(s4) from table1 group by 1,2 order by 1,2",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"province", "_col1"};
+ retArray =
+ new String[] {
+ "beijing,534.0,", "shanghai,534.0,",
+ };
+ tableResultSetEqualTest(
+ "select province,sum(s4) from table1 group by 1 order by 1",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"_col0"};
+ retArray = new String[] {"908.0,"};
+ tableResultSetEqualTest("select sum(s3) from table1;", expectedHeader, retArray, DATABASE_NAME);
}
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java
index 5faa6546618..7c88fc49be9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java
@@ -511,14 +511,17 @@ public class TableDistributedPlanGenerator
@Override
public List<PlanNode> visitAggregation(AggregationNode node, PlanContext context) {
+ OrderingScheme expectedOrderingSchema = null;
if (node.isStreamable()) {
- context.setExpectedOrderingScheme(constructOrderingSchema(node.getPreGroupedSymbols()));
+ expectedOrderingSchema = constructOrderingSchema(node.getPreGroupedSymbols());
+ context.setExpectedOrderingScheme(expectedOrderingSchema);
}
List<PlanNode> childrenNodes = node.getChild().accept(this, context);
OrderingScheme childOrdering = nodeOrderingMap.get(childrenNodes.get(0).getPlanNodeId());
- if (childOrdering != null) {
- nodeOrderingMap.put(node.getPlanNodeId(), childOrdering);
- }
+ // TODO add back while implementing StreamingAggregationOperator
+ // if (childOrdering != null) {
+ // nodeOrderingMap.put(node.getPlanNodeId(), childOrdering);
+ // }
if (childrenNodes.size() == 1) {
node.setChild(childrenNodes.get(0));
@@ -531,18 +534,28 @@ public class TableDistributedPlanGenerator
childrenNodes =
childrenNodes.stream()
.map(
- child ->
- new AggregationNode(
- queryId.genPlanNodeId(),
- child,
- intermediate.getAggregations(),
- intermediate.getGroupingSets(),
- intermediate.getPreGroupedSymbols(),
- intermediate.getStep(),
- intermediate.getHashSymbol(),
- intermediate.getGroupIdSymbol()))
+ child -> {
+ PlanNodeId planNodeId = queryId.genPlanNodeId();
+ AggregationNode aggregationNode =
+ new AggregationNode(
+ planNodeId,
+ child,
+ intermediate.getAggregations(),
+ intermediate.getGroupingSets(),
+ intermediate.getPreGroupedSymbols(),
+ intermediate.getStep(),
+ intermediate.getHashSymbol(),
+ intermediate.getGroupIdSymbol());
+ // TODO add back while implementing StreamingAggregationOperator
+ // if (node.isStreamable()) {
+ // nodeOrderingMap.put(planNodeId, childOrdering);
+ // }
+ return aggregationNode;
+ })
.collect(Collectors.toList());
- splitResult.left.setChild(mergeChildrenViaCollectOrMergeSort(childOrdering, childrenNodes));
+ splitResult.left.setChild(
+ mergeChildrenViaCollectOrMergeSort(
+ nodeOrderingMap.get(childrenNodes.get(0).getPlanNodeId()), childrenNodes));
return Collections.singletonList(splitResult.left);
}
(iotdb) 02/05: add more sort elimination cases
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch ty/1016
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 01f15bab7583263e23c45414a286b0fbfdb202d3
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Wed Oct 16 17:13:50 2024 +0800
add more sort elimination cases
---
.../it/query/recent/IoTDBTableAggregationIT.java | 152 +++++++++++++++++++++
.../distribute/TableDistributedPlanGenerator.java | 35 +++--
2 files changed, 174 insertions(+), 13 deletions(-)
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
new file mode 100644
index 00000000000..c7906e5de46
--- /dev/null
+++ b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBTableAggregationIT.java
@@ -0,0 +1,152 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.relational.it.query.recent;
+
+import org.apache.iotdb.it.env.EnvFactory;
+import org.apache.iotdb.it.framework.IoTDBTestRunner;
+import org.apache.iotdb.itbase.category.TableClusterIT;
+import org.apache.iotdb.itbase.category.TableLocalStandaloneIT;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.RunWith;
+
+import static org.apache.iotdb.db.it.utils.TestUtils.prepareTableData;
+import static org.apache.iotdb.db.it.utils.TestUtils.tableResultSetEqualTest;
+
+@RunWith(IoTDBTestRunner.class)
+@Category({TableLocalStandaloneIT.class, TableClusterIT.class})
+public class IoTDBTableAggregationIT {
+ private static final String DATABASE_NAME = "test";
+ private static final String[] createSqls =
+ new String[] {
+ "CREATE DATABASE " + DATABASE_NAME,
+ "USE " + DATABASE_NAME,
+ "CREATE TABLE table1(province STRING ID, city STRING ID, region STRING ID, device_id STRING ID, color STRING ATTRIBUTE, type STRING ATTRIBUTE, s1 INT32 MEASUREMENT, s2 INT64 MEASUREMENT, s3 FLOAT MEASUREMENT, s4 DOUBLE MEASUREMENT, s5 BOOLEAN MEASUREMENT, s6 TEXT MEASUREMENT, s7 STRING MEASUREMENT, s8 BLOB MEASUREMENT, s9 TIMESTAMP MEASUREMENT, s10 DATE MEASUREMENT",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s3,s6,s8,s9) values (2024-09-24T06:15:30.000+00:00,'shanghai','shanghai','huangpu','d01','red','A',30,30.0,'shanghai_huangpu_red_A_d01_30', X'cafebabe30',2024-09-24T06:15:30.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s3,s4,s6,s7,s9,s10) values (2024-09-24T06:15:35.000+00:00,'shanghai','shanghai','huangpu','d01','red','A',35000,35.0,35.0,'shanghai_huangpu_red_A_d01_35','shanghai_huangpu_red_A_d01_35',2024-09-24T06:15:35.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s3,s5,s7,s9) values (2024-09-24T06:15:40.000+00:00,'shanghai','shanghai','huangpu','d01','red','A',40,40.0,true,'shanghai_huangpu_red_A_d01_40',2024-09-24T06:15:40.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s5,s9,s10) values (2024-09-24T06:15:50.000+00:00,'shanghai','shanghai','huangpu','d01','red','A',50000,false,2024-09-24T06:15:50.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s4,s8,s9) values (2024-09-24T06:15:55.000+00:00,'shanghai','shanghai','huangpu','d01','red','A',55,55.0,X'cafebabe55',2024-09-24T06:15:55.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s5,s6,s7,s9) values (2024-09-24T06:15:36.000+00:00,'shanghai','shanghai','huangpu','d02','red','BBBBBBBBBBBBBBBB',36,true,'shanghai_huangpu_red_B_d02_36','shanghai_huangpu_red_B_d02_36',2024-09-24T06:15:36.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s4,s7,s9,s10) values (2024-09-24T06:15:40.000+00:00,'shanghai','shanghai','huangpu','d02','red','BBBBBBBBBBBBBBBB',40,40.0,'shanghai_huangpu_red_B_d02_40',2024-09-24T06:15:40.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s7,s8,s9) values (2024-09-24T06:15:50.000+00:00,'shanghai','shanghai','huangpu','d02','red','BBBBBBBBBBBBBBBB',50000,'shanghai_huangpu_red_B_d02_50',X'cafebabe50',2024-09-24T06:15:50.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s8,s9) values (2024-09-24T06:15:31.000+00:00,'shanghai','shanghai','huangpu','d03','yellow','A',31000,X'cafebabe31',2024-09-24T06:15:31.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s4,s7,s9,s10) values (2024-09-24T06:15:36.000+00:00,'shanghai','shanghai','huangpu','d03','yellow','A',36,36.0,'shanghai_huangpu_yellow_A_d03_36',2024-09-24T06:15:36.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s3,s5,s6,s8,s9) values (2024-09-24T06:15:41.000+00:00,'shanghai','shanghai','huangpu','d03','yellow','A',41,41.0,false,'shanghai_huangpu_yellow_A_d03_41',X'cafebabe41',2024-09-24T06:15:41.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s4,s7,s9) values (2024-09-24T06:15:46.000+00:00,'shanghai','shanghai','huangpu','d03','yellow','A',46000,46.0,'shanghai_huangpu_yellow_A_d03_46',2024-09-24T06:15:46.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s3,s6,s9) values (2024-09-24T06:15:51.000+00:00,'shanghai','shanghai','huangpu','d03','yellow','A',51.0,'shanghai_huangpu_yellow_A_d03_51',2024-09-24T06:15:51.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s3,s5,s7,s9,s10) values (2024-09-24T06:15:30.000+00:00,'shanghai','shanghai','huangpu','d04','yellow','BBBBBBBBBBBBBBBB',30.0,true,'shanghai_huangpu_yellow_B_d04_30',2024-09-24T06:15:30.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s9) values (2024-09-24T06:15:40.000+00:00,'shanghai','shanghai','huangpu','d04','yellow','BBBBBBBBBBBBBBBB',40000,2024-09-24T06:15:40.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s4,s6,s8,s9) values (2024-09-24T06:15:55.000+00:00,'shanghai','shanghai','huangpu','d04','yellow','BBBBBBBBBBBBBBBB',55,55.0,'shanghai_huangpu_yellow_B_d04_55',X'cafebabe55',2024-09-24T06:15:55.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s3,s6,s8,s9) values (2024-09-24T06:15:30.000+00:00,'shanghai','shanghai','pudong','d05','red','A',30,30.0,'shanghai_pudong_red_A_d05_30', X'cafebabe30',2024-09-24T06:15:30.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s3,s4,s6,s7,s9,s10) values (2024-09-24T06:15:35.000+00:00,'shanghai','shanghai','pudong','d05','red','A',35000,35.0,35.0,'shanghai_pudong_red_A_d05_35','shanghai_pudong_red_A_d05_35',2024-09-24T06:15:35.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s3,s5,s7,s9) values (2024-09-24T06:15:40.000+00:00,'shanghai','shanghai','pudong','d05','red','A',40,40.0,true,'shanghai_pudong_red_A_d05_40',2024-09-24T06:15:40.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s5,s9,s10) values (2024-09-24T06:15:50.000+00:00,'shanghai','shanghai','pudong','d05','red','A',50000,false,2024-09-24T06:15:50.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s4,s8,s9) values (2024-09-24T06:15:55.000+00:00,'shanghai','shanghai','pudong','d05','red','A',55,55.0,X'cafebabe55',2024-09-24T06:15:55.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s5,s6,s7,s9) values (2024-09-24T06:15:36.000+00:00,'shanghai','shanghai','pudong','d06','red','BBBBBBBBBBBBBBBB',36,true,'shanghai_pudong_red_B_d06_36','shanghai_pudong_red_B_d06_36',2024-09-24T06:15:36.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s4,s7,s9,s10) values (2024-09-24T06:15:40.000+00:00,'shanghai','shanghai','pudong','d06','red','BBBBBBBBBBBBBBBB',40,40.0,'shanghai_pudong_red_B_d06_40',2024-09-24T06:15:40.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s7,s8,s9) values (2024-09-24T06:15:50.000+00:00,'shanghai','shanghai','pudong','d06','red','BBBBBBBBBBBBBBBB',50000,'shanghai_pudong_red_B_d06_50',X'cafebabe50',2024-09-24T06:15:50.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s8,s9) values (2024-09-24T06:15:31.000+00:00,'shanghai','shanghai','pudong','d07','yellow','A',31000,X'cafebabe31',2024-09-24T06:15:31.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s4,s7,s9,s10) values (2024-09-24T06:15:36.000+00:00,'shanghai','shanghai','pudong','d07','yellow','A',36,36.0,'shanghai_pudong_yellow_A_d07_36',2024-09-24T06:15:36.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s3,s5,s6,s8,s9) values (2024-09-24T06:15:41.000+00:00,'shanghai','shanghai','pudong','d07','yellow','A',41,41.0,false,'shanghai_pudong_yellow_A_d07_41',X'cafebabe41',2024-09-24T06:15:41.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s4,s7,s9) values (2024-09-24T06:15:46.000+00:00,'shanghai','shanghai','pudong','d07','yellow','A',46000,46.0,'shanghai_pudong_yellow_A_d07_46',2024-09-24T06:15:46.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s3,s6,s9) values (2024-09-24T06:15:51.000+00:00,'shanghai','shanghai','pudong','d07','yellow','A',51.0,'shanghai_pudong_yellow_A_d07_51',2024-09-24T06:15:51.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s3,s5,s7,s9,s10) values (2024-09-24T06:15:30.000+00:00,'shanghai','shanghai','pudong','d08','yellow','BBBBBBBBBBBBBBBB',30.0,true,'shanghai_pudong_yellow_B_d08_30',2024-09-24T06:15:30.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s9) values (2024-09-24T06:15:40.000+00:00,'shanghai','shanghai','pudong','d08','yellow','BBBBBBBBBBBBBBBB',40000,2024-09-24T06:15:40.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s4,s6,s8,s9) values (2024-09-24T06:15:55.000+00:00,'shanghai','shanghai','pudong','d08','yellow','BBBBBBBBBBBBBBBB',55,55.0,'shanghai_pudong_yellow_B_d08_55',X'cafebabe55',2024-09-24T06:15:55.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s3,s6,s8,s9) values (2024-09-24T06:15:30.000+00:00,'beijing','beijing','chaoyang','d09','red','A',30,30.0,'beijing_chaoyang_red_A_d09_30', X'cafebabe30',2024-09-24T06:15:30.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s3,s4,s6,s7,s9,s10) values (2024-09-24T06:15:35.000+00:00,'beijing','beijing','chaoyang','d09','red','A',35000,35.0,35.0,'beijing_chaoyang_red_A_d09_35','beijing_chaoyang_red_A_d09_35',2024-09-24T06:15:35.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s3,s5,s7,s9) values (2024-09-24T06:15:40.000+00:00,'beijing','beijing','chaoyang','d09','red','A',40,40.0,true,'beijing_chaoyang_red_A_d09_40',2024-09-24T06:15:40.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s5,s9,s10) values (2024-09-24T06:15:50.000+00:00,'beijing','beijing','chaoyang','d09','red','A',50000,false,2024-09-24T06:15:50.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s4,s8,s9) values (2024-09-24T06:15:55.000+00:00,'beijing','beijing','chaoyang','d09','red','A',55,55.0,X'cafebabe55',2024-09-24T06:15:55.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s5,s6,s7,s9) values (2024-09-24T06:15:36.000+00:00,'beijing','beijing','chaoyang','d10','red','BBBBBBBBBBBBBBBB',36,true,'beijing_chaoyang_red_B_d10_36','beijing_chaoyang_red_B_d10_36',2024-09-24T06:15:36.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s4,s7,s9,s10) values (2024-09-24T06:15:40.000+00:00,'beijing','beijing','chaoyang','d10','red','BBBBBBBBBBBBBBBB',40,40.0,'beijing_chaoyang_red_B_d10_40',2024-09-24T06:15:40.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s7,s8,s9) values (2024-09-24T06:15:50.000+00:00,'beijing','beijing','chaoyang','d10','red','BBBBBBBBBBBBBBBB',50000,'beijing_chaoyang_red_B_d10_50',X'cafebabe50',2024-09-24T06:15:50.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s8,s9) values (2024-09-24T06:15:31.000+00:00,'beijing','beijing','chaoyang','d11','yellow','A',31000,X'cafebabe31',2024-09-24T06:15:31.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s4,s7,s9,s10) values (2024-09-24T06:15:36.000+00:00,'beijing','beijing','chaoyang','d11','yellow','A',36,36.0,'beijing_chaoyang_yellow_A_d11_36',2024-09-24T06:15:36.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s3,s5,s6,s8,s9) values (2024-09-24T06:15:41.000+00:00,'beijing','beijing','chaoyang','d11','yellow','A',41,41.0,false,'beijing_chaoyang_yellow_A_d11_41',X'cafebabe41',2024-09-24T06:15:41.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s4,s7,s9) values (2024-09-24T06:15:46.000+00:00,'beijing','beijing','chaoyang','d11','yellow','A',46000,46.0,'beijing_chaoyang_yellow_A_d11_46',2024-09-24T06:15:46.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s3,s6,s9) values (2024-09-24T06:15:51.000+00:00,'beijing','beijing','chaoyang','d11','yellow','A',51.0,'beijing_chaoyang_yellow_A_d11_51',2024-09-24T06:15:51.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s3,s5,s7,s9,s10) values (2024-09-24T06:15:30.000+00:00,'beijing','beijing','chaoyang','d12','yellow','BBBBBBBBBBBBBBBB',30.0,true,'beijing_chaoyang_yellow_B_d12_30',2024-09-24T06:15:30.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s9) values (2024-09-24T06:15:40.000+00:00,'beijing','beijing','chaoyang','d12','yellow','BBBBBBBBBBBBBBBB',40000,2024-09-24T06:15:40.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s4,s6,s8,s9) values (2024-09-24T06:15:55.000+00:00,'beijing','beijing','chaoyang','d12','yellow','BBBBBBBBBBBBBBBB',55,55.0,'beijing_chaoyang_yellow_B_d12_55',X'cafebabe55',2024-09-24T06:15:55.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s3,s6,s8,s9) values (2024-09-24T06:15:30.000+00:00,'beijing','beijing','haidian','d13','red','A',30,30.0,'beijing_haidian_red_A_d13_30', X'cafebabe30',2024-09-24T06:15:30.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s3,s4,s6,s7,s9,s10) values (2024-09-24T06:15:35.000+00:00,'beijing','beijing','haidian','d13','red','A',35000,35.0,35.0,'beijing_haidian_red_A_d13_35','beijing_haidian_red_A_d13_35',2024-09-24T06:15:35.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s3,s5,s7,s9) values (2024-09-24T06:15:40.000+00:00,'beijing','beijing','haidian','d13','red','A',40,40.0,true,'beijing_haidian_red_A_d13_40',2024-09-24T06:15:40.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s5,s9,s10) values (2024-09-24T06:15:50.000+00:00,'beijing','beijing','haidian','d13','red','A',50000,false,2024-09-24T06:15:50.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s4,s8,s9) values (2024-09-24T06:15:55.000+00:00,'beijing','beijing','haidian','d13','red','A',55,55.0,X'cafebabe55',2024-09-24T06:15:55.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s5,s6,s7,s9) values (2024-09-24T06:15:36.000+00:00,'beijing','beijing','haidian','d14','red','BBBBBBBBBBBBBBBB',36,true,'beijing_haidian_red_B_d14_36','beijing_haidian_red_B_d14_36',2024-09-24T06:15:36.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s4,s7,s9,s10) values (2024-09-24T06:15:40.000+00:00,'beijing','beijing','haidian','d14','red','BBBBBBBBBBBBBBBB',40,40.0,'beijing_haidian_red_B_d14_40',2024-09-24T06:15:40.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s7,s8,s9) values (2024-09-24T06:15:50.000+00:00,'beijing','beijing','haidian','d14','red','BBBBBBBBBBBBBBBB',50000,'beijing_haidian_red_B_d14_50',X'cafebabe50',2024-09-24T06:15:50.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s8,s9) values (2024-09-24T06:15:31.000+00:00,'beijing','beijing','haidian','d15','yellow','A',31000,X'cafebabe31',2024-09-24T06:15:31.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s4,s7,s9,s10) values (2024-09-24T06:15:36.000+00:00,'beijing','beijing','haidian','d15','yellow','A',36,36.0,'beijing_haidian_yellow_A_d15_36',2024-09-24T06:15:36.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s3,s5,s6,s8,s9) values (2024-09-24T06:15:41.000+00:00,'beijing','beijing','haidian','d15','yellow','A',41,41.0,false,'beijing_haidian_yellow_A_d15_41',X'cafebabe41',2024-09-24T06:15:41.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s4,s7,s9) values (2024-09-24T06:15:46.000+00:00,'beijing','beijing','haidian','d15','yellow','A',46000,46.0,'beijing_haidian_yellow_A_d15_46',2024-09-24T06:15:46.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s3,s6,s9) values (2024-09-24T06:15:51.000+00:00,'beijing','beijing','haidian','d15','yellow','A',51.0,'beijing_haidian_yellow_A_d15_51',2024-09-24T06:15:51.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s3,s5,s7,s9,s10) values (2024-09-24T06:15:30.000+00:00,'beijing','beijing','haidian','d16','yellow','BBBBBBBBBBBBBBBB',30.0,true,'beijing_haidian_yellow_B_d16_30',2024-09-24T06:15:30.000+00:00,'2024-09-24'",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s2,s9) values (2024-09-24T06:15:40.000+00:00,'beijing','beijing','haidian','d16','yellow','BBBBBBBBBBBBBBBB',40000,2024-09-24T06:15:40.000+00:00",
+ "INSERT INTO table1(time,province,city,region,device_id,color,type,s1,s4,s6,s8,s9) values (2024-09-24T06:15:55.000+00:00,'beijing','beijing','haidian','d16','yellow','BBBBBBBBBBBBBBBB',55,55.0,'beijing_haidian_yellow_B_d16_55',X'cafebabe55',2024-09-24T06:15:55.000+00:00",
+ };
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ EnvFactory.getEnv().initClusterEnvironment();
+ prepareTableData(createSqls);
+ }
+
+ @AfterClass
+ public static void tearDown() throws Exception {
+ EnvFactory.getEnv().cleanClusterEnvironment();
+ }
+
+ @Ignore
+ @Test
+ public void countTest() {
+ String[] expectedHeader = new String[] {"_col0"};
+ String[] retArray =
+ new String[] {
+ "5,",
+ };
+ tableResultSetEqualTest(
+ "select count(*) from table1 where device_id = 'd01'",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+
+ expectedHeader = new String[] {"_col0", "end_time", "device_id", "_col3"};
+ retArray =
+ new String[] {
+ "2024-09-24T06:15:30.000Z,2024-09-24T06:15:35.000Z,d01,1,",
+ "2024-09-24T06:15:35.000Z,2024-09-24T06:15:40.000Z,d01,1,",
+ "2024-09-24T06:15:40.000Z,2024-09-24T06:15:45.000Z,d01,1,",
+ "2024-09-24T06:15:50.000Z,2024-09-24T06:15:55.000Z,d01,1,",
+ "2024-09-24T06:15:55.000Z,2024-09-24T06:16:00.000Z,d01,1,",
+ };
+ tableResultSetEqualTest(
+ "select date_bin(5s, time), (date_bin(5s, time) + 5000) as end_time, device_id, count(*) from table1 where device_id = 'd01' group by 1,device_id",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+ }
+}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java
index 2ba8853e76b..5faa6546618 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java
@@ -317,9 +317,13 @@ public class TableDistributedPlanGenerator
new MergeSortNode(
queryId.genPlanNodeId(), node.getOrderingScheme(), node.getOutputSymbols());
for (PlanNode child : childrenNodes) {
- SortNode subSortNode =
- new SortNode(queryId.genPlanNodeId(), child, node.getOrderingScheme(), false, false);
- mergeSortNode.addChild(subSortNode);
+ if (canSortEliminated(node.getOrderingScheme(), nodeOrderingMap.get(child.getPlanNodeId()))) {
+ mergeSortNode.addChild(child);
+ } else {
+ SortNode subSortNode =
+ new SortNode(queryId.genPlanNodeId(), child, node.getOrderingScheme(), false, false);
+ mergeSortNode.addChild(subSortNode);
+ }
}
nodeOrderingMap.put(mergeSortNode.getPlanNodeId(), mergeSortNode.getOrderingScheme());
@@ -358,7 +362,8 @@ public class TableDistributedPlanGenerator
List<PlanNode> childrenNodes = node.getChild().accept(this, context);
if (childrenNodes.size() == 1) {
- if (canSortEliminated(node.getOrderingScheme(), nodeOrderingMap.get(childrenNodes.get(0)))) {
+ if (canSortEliminated(
+ node.getOrderingScheme(), nodeOrderingMap.get(childrenNodes.get(0).getPlanNodeId()))) {
return childrenNodes;
} else {
node.setChild(childrenNodes.get(0));
@@ -371,15 +376,19 @@ public class TableDistributedPlanGenerator
new MergeSortNode(
queryId.genPlanNodeId(), node.getOrderingScheme(), node.getOutputSymbols());
for (PlanNode child : childrenNodes) {
- StreamSortNode subSortNode =
- new StreamSortNode(
- queryId.genPlanNodeId(),
- child,
- node.getOrderingScheme(),
- false,
- node.isOrderByAllIdsAndTime(),
- node.getStreamCompareKeyEndIndex());
- mergeSortNode.addChild(subSortNode);
+ if (canSortEliminated(node.getOrderingScheme(), nodeOrderingMap.get(child.getPlanNodeId()))) {
+ mergeSortNode.addChild(child);
+ } else {
+ StreamSortNode subSortNode =
+ new StreamSortNode(
+ queryId.genPlanNodeId(),
+ child,
+ node.getOrderingScheme(),
+ false,
+ node.isOrderByAllIdsAndTime(),
+ node.getStreamCompareKeyEndIndex());
+ mergeSortNode.addChild(subSortNode);
+ }
}
nodeOrderingMap.put(mergeSortNode.getPlanNodeId(), mergeSortNode.getOrderingScheme());
(iotdb) 05/05: Add some ITs
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch ty/1016
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 64d7adc8eeccb18e8838257f8f7a634f0d39cf05
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Thu Oct 17 14:30:28 2024 +0800
Add some ITs
---
.../db/queryengine/plan/relational/metadata/TableMetadataImpl.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
index 73febae6c53..b47a2f98450 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
@@ -527,9 +527,6 @@ public class TableMetadataImpl implements Metadata {
switch (functionName.toLowerCase(Locale.ENGLISH)) {
case SqlConstant.AVG:
case SqlConstant.SUM:
- case SqlConstant.EXTREME:
- case SqlConstant.MIN:
- case SqlConstant.MAX:
case SqlConstant.STDDEV:
case SqlConstant.STDDEV_POP:
case SqlConstant.STDDEV_SAMP:
@@ -543,6 +540,9 @@ public class TableMetadataImpl implements Metadata {
functionName));
}
break;
+ case SqlConstant.EXTREME:
+ case SqlConstant.MIN:
+ case SqlConstant.MAX:
case SqlConstant.MODE:
if (argumentTypes.size() != 1) {
throw new SemanticException(
(iotdb) 04/05: Merge remote-tracking branch 'origin/master' into ty/1016
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch ty/1016
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 8074313d8ac94e7ec340d8ca244242ba3f898551
Merge: f9056e8bb10 88ef922e996
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Thu Oct 17 12:00:04 2024 +0800
Merge remote-tracking branch 'origin/master' into ty/1016
LICENSE | 8 +
.../db/it/IoTDBMultiIDsWithAttributesTableIT.java | 8 +-
.../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 | 2 +-
.../CnToDnInternalServiceAsyncRequestManager.java | 5 +-
.../iotdb/confignode/manager/ConfigManager.java | 10 +-
.../apache/iotdb/confignode/manager/IManager.java | 2 +-
.../iotdb/confignode/manager/node/NodeManager.java | 9 +-
.../thrift/ConfigNodeRPCServiceProcessor.java | 6 +-
.../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 57 +++
.../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 33 ++
.../dataregion/DataExecutionVisitor.java | 3 +
.../schemaregion/SchemaExecutionVisitor.java | 32 +-
.../schemaregion/SchemaRegionStateMachine.java | 33 +-
.../evolvable/batch/PipeTabletEventPlainBatch.java | 44 ++-
.../request/PipeTransferTabletBatchReqV2.java | 241 ++++++++++++
.../request/PipeTransferTabletBinaryReq.java | 10 +-
...Req.java => PipeTransferTabletBinaryReqV2.java} | 101 +++--
.../request/PipeTransferTabletInsertNodeReq.java | 12 +-
...java => PipeTransferTabletInsertNodeReqV2.java} | 89 +++--
.../request/PipeTransferTabletRawReq.java | 5 +-
...RawReq.java => PipeTransferTabletRawReqV2.java} | 83 ++--
.../request/PipeTransferTsFileSealWithModReq.java | 62 ++-
.../airgap/IoTDBDataRegionAirGapConnector.java | 42 +-
.../pipeconsensus/PipeConsensusAsyncConnector.java | 5 +-
.../pipeconsensus/PipeConsensusSyncConnector.java | 5 +-
.../PipeConsensusTransferBatchReqBuilder.java | 1 +
.../async/IoTDBDataRegionAsyncConnector.java | 31 +-
.../async/handler/PipeTransferTsFileHandler.java | 16 +-
.../thrift/sync/IoTDBDataRegionSyncConnector.java | 46 ++-
.../db/pipe/event/common/row/PipeRowCollector.java | 2 +-
.../common/tablet/PipeRawTabletInsertionEvent.java | 2 +-
.../common/tsfile/PipeTsFileInsertionEvent.java | 7 +-
.../query/TsFileInsertionEventQueryParser.java | 12 +-
.../scan/TsFileInsertionEventScanParser.java | 2 +-
.../pipe/metric/PipeDataNodeReceiverMetrics.java | 84 ++++
.../protocol/airgap/IoTDBAirGapReceiverAgent.java | 6 +-
.../pipeconsensus/PipeConsensusReceiver.java | 73 +++-
.../protocol/thrift/IoTDBDataNodeReceiver.java | 130 ++++++-
.../iotdb/db/protocol/client/ConfigNodeClient.java | 4 +-
.../client/dn/DataNodeAsyncRequestRPCHandler.java | 15 +-
.../DnToDnInternalServiceAsyncRequestManager.java | 11 +-
.../db/protocol/client/dn/DnToDnRequestType.java | 1 +
.../db/protocol/mqtt/PayloadFormatManager.java | 3 +-
.../impl/DataNodeInternalRPCServiceImpl.java | 100 +++--
.../iotdb/db/queryengine/plan/Coordinator.java | 2 +
.../execution/config/TableConfigTaskVisitor.java | 9 +
.../config/executor/ClusterConfigTaskExecutor.java | 22 +-
.../config/executor/IConfigTaskExecutor.java | 3 +-
.../relational}/ClearCacheTask.java | 16 +-
.../metadata/relational/ShowDataNodesTask.java | 12 +-
.../plan/execution/config/sys/ClearCacheTask.java | 7 +-
.../db/queryengine/plan/parser/ASTVisitor.java | 21 +-
.../plan/planner/TableOperatorGenerator.java | 6 +-
.../plan/planner/plan/node/PlanNodeType.java | 19 +-
.../plan/planner/plan/node/PlanVisitor.java | 25 +-
.../node/metadata/read/TableDeviceSourceNode.java | 27 +-
.../fetcher/TableDeviceCacheAttributeGuard.java | 158 ++++++++
.../metadata/fetcher/TableDeviceSchemaFetcher.java | 113 +++---
.../fetcher/TableDeviceSchemaValidator.java | 5 -
.../fetcher/cache/TableDeviceCacheEntry.java | 23 +-
.../fetcher/cache/TableDeviceSchemaCache.java | 28 ++
.../cache/TreeDeviceSchemaCacheManager.java | 47 +--
.../relational/planner/TableLogicalPlanner.java | 18 +-
.../planner/distribute/AddExchangeNodes.java | 6 +-
.../distribute/TableDistributedPlanGenerator.java | 22 +-
.../TableModelTypeProviderExtractor.java | 6 +-
.../node/schema}/AbstractTableDeviceQueryNode.java | 35 +-
...ctTableSchemaQueryAttributeSecurityVisitor.java | 69 ++++
.../CreateOrUpdateTableDeviceNode.java | 4 +-
.../TableDeviceAttributeCommitUpdateNode.java | 194 +++++++++
.../schema}/TableDeviceAttributeUpdateNode.java | 6 +-
.../planner/node/schema}/TableDeviceFetchNode.java | 39 +-
.../node/schema}/TableDeviceQueryCountNode.java | 15 +-
.../node/schema}/TableDeviceQueryScanNode.java | 10 +-
.../node/schema/TableNodeLocationAddNode.java | 115 ++++++
...TableSchemaQuerySuccessfulCallbackVisitor.java} | 22 +-
.../node/schema/TableSchemaQueryWriteVisitor.java | 46 +++
.../plan/relational/sql/ast/AstVisitor.java | 4 +
.../plan/relational/sql/ast/ClearCache.java | 83 ++++
.../plan/relational/sql/parser/AstBuilder.java | 28 +-
.../scheduler/FragmentInstanceDispatcherImpl.java | 52 ++-
.../plan/statement/crud/LoadTsFileStatement.java | 4 +
.../plan/statement/sys/ClearCacheStatement.java | 17 +-
.../rescon/MemSchemaEngineStatistics.java | 4 +-
.../schemaengine/schemaregion/ISchemaRegion.java | 102 +++--
.../schemaregion/SchemaRegionPlanType.java | 2 +
.../schemaregion/SchemaRegionPlanVisitor.java | 17 +-
.../attribute/DeviceAttributeStore.java | 10 +-
.../update/DeviceAttributeCacheUpdater.java | 433 +++++++++++++++++++++
.../GeneralRegionAttributeSecurityService.java | 358 +++++++++++++++++
.../update/RewritableByteArrayOutputStream.java | 58 +++
.../attribute/update/UpdateClearContainer.java | 147 +++++++
.../attribute/update/UpdateContainer.java | 53 +++
.../attribute/update/UpdateDetailContainer.java | 343 ++++++++++++++++
.../update/UpdateDetailContainerStatistics.java | 52 +++
.../schemaregion/impl/SchemaRegionMemoryImpl.java | 139 +++++--
.../schemaregion/impl/SchemaRegionPBTreeImpl.java | 24 +-
.../visitor/SchemaRegionPlanDeserializer.java | 19 +-
.../visitor/SchemaRegionPlanSerializer.java | 29 +-
.../schemaregion/mtree/impl/mem/MemMTreeStore.java | 12 +-
.../impl/mem/snapshot/MemMTreeSnapshotUtil.java | 19 +-
.../schemaengine/schemaregion/tag/TagManager.java | 8 +-
.../write/req/SchemaRegionWritePlanFactory.java | 10 +-
.../db/schemaengine/table/DataNodeTableCache.java | 2 +-
.../java/org/apache/iotdb/db/service/DataNode.java | 4 +
.../db/service/DataNodeInternalRPCService.java | 4 +
.../db/storageengine/dataregion/DataRegion.java | 143 ++++---
.../dataregion/memtable/TsFileProcessor.java | 40 +-
.../broker/SubscriptionPrefetchingQueue.java | 150 ++++---
.../broker/SubscriptionPrefetchingTabletQueue.java | 148 +++----
.../broker/SubscriptionPrefetchingTsFileQueue.java | 274 +++++++------
.../SchemaRegionSimpleRecoverTest.java | 2 +-
.../schemaRegion/SchemaRegionTestUtil.java | 2 +-
.../connector/PipeDataNodeThriftRequestTest.java | 203 ++++++++++
.../pipe/event/TsFileInsertionEventParserTest.java | 23 +-
.../dataregion/memtable/TsFileProcessorTest.java | 52 +--
.../client/request/AsyncRequestContext.java | 10 +-
.../client/request/AsyncRequestManager.java | 42 +-
.../iotdb/commons/concurrent/ThreadName.java | 4 +-
.../payload/thrift/request/PipeRequestType.java | 5 +
.../thrift/request/PipeTransferFileSealReqV2.java | 6 +-
.../pipe/datastructure/pattern/TablePattern.java | 2 +-
.../commons/pipe/event/PipeInsertionEvent.java | 20 +-
.../commons/schema/ClusterSchemaQuotaLevel.java | 1 +
.../iotdb/commons/schema/SchemaConstant.java | 6 +-
.../commons/schema/cache/CacheClearOptions.java} | 10 +-
.../apache/iotdb/commons/service/ServiceType.java | 2 +
.../org/apache/iotdb/commons/utils/FileUtils.java | 4 +-
.../commons/utils/ThriftCommonsSerDeUtils.java | 40 +-
.../iotdb/commons/client/ClientManagerTest.java | 7 +-
.../db/relational/grammar/sql/RelationalSql.g4 | 8 +-
.../src/main/thrift/confignode.thrift | 4 +-
.../src/main/thrift/pipeconsensus.thrift | 3 +-
.../src/main/thrift/datanode.thrift | 14 +-
pom.xml | 2 +-
135 files changed, 4875 insertions(+), 992 deletions(-)
(iotdb) 01/05: change tsfile version
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch ty/1016
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 48c695325ce22ecb8e20e69cc1f89d3bc5dfdd62
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Wed Oct 16 16:34:49 2024 +0800
change tsfile version
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index a5e76b9912c..17f900aa240 100644
--- a/pom.xml
+++ b/pom.xml
@@ -166,7 +166,7 @@
<thrift.version>0.14.1</thrift.version>
<xz.version>1.9</xz.version>
<zstd-jni.version>1.5.6-3</zstd-jni.version>
- <tsfile.version>1.2.0-53d247f-SNAPSHOT</tsfile.version>
+ <tsfile.version>1.2.0-d28fef17-SNAPSHOT</tsfile.version>
</properties>
<!--
if we claim dependencies in dependencyManagement, then we do not claim