This is an automated email from the ASF dual-hosted git repository. jackietien pushed a commit to branch TreeDeviceCrossRegion in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 7a795c869d70700ac62d8ee3647ca59490a75e28 Author: JackieTien97 <[email protected]> AuthorDate: Wed Sep 3 09:37:05 2025 +0800 Add IT --- .../db/it/alignbydevice/IoTDBAlignByDevice2IT.java | 8 +++-- .../db/it/alignbydevice/IoTDBAlignByDevice3IT.java | 8 +++-- ...ByDevice2IT.java => IoTDBAlignByDevice4IT.java} | 17 +++++++---- .../db/it/alignbydevice/IoTDBAlignByDeviceIT.java | 34 ++++++++++++---------- .../IoTDBAlignByDeviceWithTemplate2IT.java | 8 +++-- ...java => IoTDBAlignByDeviceWithTemplate3IT.java} | 21 ++++++++----- ...DBAlignByDeviceWithTemplateAggregation2IT.java} | 23 ++++++++------- ...oTDBAlignByDeviceWithTemplateAggregationIT.java | 4 +-- .../IoTDBAlignByDeviceWithTemplateIT.java | 8 ++--- .../IoTDBOrderByLimitOffsetAlignByDevice2IT.java | 8 +++-- ...> IoTDBOrderByLimitOffsetAlignByDevice3IT.java} | 17 +++++++---- .../IoTDBOrderByLimitOffsetAlignByDeviceIT.java | 4 +-- .../IoTDBOrderByWithAlignByDevice2IT.java | 8 +++-- .../IoTDBOrderByWithAlignByDevice3IT.java | 8 +++-- ....java => IoTDBOrderByWithAlignByDevice4IT.java} | 19 ++++++++---- .../IoTDBOrderByWithAlignByDeviceIT.java | 4 +-- .../db/it/alignbydevice/IoTDBShuffleSink1IT.java | 8 ++--- ...ByDevice2IT.java => IoTDBShuffleSink1_2IT.java} | 27 ++++++++++------- .../db/it/alignbydevice/IoTDBShuffleSink2IT.java | 10 +++---- ...ByDevice2IT.java => IoTDBShuffleSink2_2IT.java} | 29 +++++++++++------- .../plan/planner/OperatorTreeGenerator.java | 22 ++++++++++++++ .../apache/iotdb/commons/conf/CommonConfig.java | 2 +- 22 files changed, 195 insertions(+), 102 deletions(-) diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDevice2IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDevice2IT.java index efca7a3f540..c1418f9359c 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDevice2IT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDevice2IT.java @@ -20,21 +20,25 @@ package org.apache.iotdb.db.it.alignbydevice; import org.apache.iotdb.it.env.EnvFactory; +import org.apache.iotdb.itbase.category.ClusterIT; +import org.apache.iotdb.itbase.category.LocalStandaloneIT; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.experimental.categories.Category; +@Category({LocalStandaloneIT.class, ClusterIT.class}) public class IoTDBAlignByDevice2IT extends IoTDBAlignByDeviceIT { @BeforeClass - public static void setUp() throws Exception { + public static void setUp() { EnvFactory.getEnv().getConfig().getCommonConfig().setDegreeOfParallelism(4); EnvFactory.getEnv().initClusterEnvironment(); insertData(); } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } } diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDevice3IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDevice3IT.java index 68b2c40cc6b..5171bad3d23 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDevice3IT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDevice3IT.java @@ -20,24 +20,28 @@ package org.apache.iotdb.db.it.alignbydevice; import org.apache.iotdb.it.env.EnvFactory; +import org.apache.iotdb.itbase.category.ClusterIT; +import org.apache.iotdb.itbase.category.LocalStandaloneIT; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.experimental.categories.Category; /** * Change series_slot_num to 1, to generate more devices which are cross data regions as possible. */ +@Category({LocalStandaloneIT.class, ClusterIT.class}) public class IoTDBAlignByDevice3IT extends IoTDBAlignByDeviceIT { @BeforeClass - public static void setUp() throws Exception { + public static void setUp() { EnvFactory.getEnv().getConfig().getCommonConfig().setSeriesSlotNum(1); EnvFactory.getEnv().initClusterEnvironment(); insertData(); } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } } diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDevice2IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDevice4IT.java similarity index 58% copy from integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDevice2IT.java copy to integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDevice4IT.java index efca7a3f540..3b8f269f8ca 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDevice2IT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDevice4IT.java @@ -7,7 +7,7 @@ * "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 + * 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 @@ -20,21 +20,28 @@ package org.apache.iotdb.db.it.alignbydevice; import org.apache.iotdb.it.env.EnvFactory; +import org.apache.iotdb.itbase.category.ClusterIT; +import org.apache.iotdb.itbase.category.LocalStandaloneIT; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.experimental.categories.Category; -public class IoTDBAlignByDevice2IT extends IoTDBAlignByDeviceIT { +import static org.apache.iotdb.confignode.it.partition.IoTDBPartitionShuffleStrategyIT.SHUFFLE; +@Category({LocalStandaloneIT.class, ClusterIT.class}) +public class IoTDBAlignByDevice4IT extends IoTDBAlignByDeviceIT { @BeforeClass - public static void setUp() throws Exception { - EnvFactory.getEnv().getConfig().getCommonConfig().setDegreeOfParallelism(4); + public static void setUp() { + EnvFactory.getEnv().getConfig().getCommonConfig().setSortBufferSize(1024 * 1024); + EnvFactory.getEnv().getConfig().getCommonConfig().setTimePartitionInterval(1); + EnvFactory.getEnv().getConfig().getCommonConfig().setDataPartitionAllocationStrategy(SHUFFLE); EnvFactory.getEnv().initClusterEnvironment(); insertData(); } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } } diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceIT.java index 1bb3e76061d..bf82d7a9950 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceIT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceIT.java @@ -104,13 +104,13 @@ public class IoTDBAlignByDeviceIT { }; @BeforeClass - public static void setUp() throws Exception { + public static void setUp() { EnvFactory.getEnv().initClusterEnvironment(); insertData(); } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } @@ -662,27 +662,29 @@ public class IoTDBAlignByDeviceIT { @Test public void aggregateTest() { String[] retArray = - new String[] {"root.vehicle.d0,11,11,6,6,1,", "root.vehicle.d1,2,null,null,null,null,"}; + new String[] { + "root.vehicle.d0,11,55555,1000.11,good,true,", "root.vehicle.d1,2,null,null,null,null," + }; try (Connection connection = EnvFactory.getEnv().getConnection(); Statement statement = connection.createStatement()) { try (ResultSet resultSet = statement.executeQuery( - "select count(s0),count(s1),count(s2),count(s3),count(s4) " + "select count(s0),max_value(s1),max_value(s2),last_value(s3),last_value(s4) " + "from root.vehicle.d1,root.vehicle.d0 align by device")) { ResultSetMetaData resultSetMetaData = resultSet.getMetaData(); List<Integer> actualIndexToExpectedIndexList = checkHeader( resultSetMetaData, - "Device,count(s0),count(s1),count(s2),count(s3),count(s4)", + "Device,count(s0),max_value(s1),max_value(s2),last_value(s3),last_value(s4)", new int[] { Types.VARCHAR, Types.BIGINT, Types.BIGINT, - Types.BIGINT, - Types.BIGINT, - Types.BIGINT, + Types.FLOAT, + Types.VARCHAR, + Types.BOOLEAN, }); int cnt = 0; @@ -711,9 +713,9 @@ public class IoTDBAlignByDeviceIT { public void groupByTimeTest() { String[] retArray = new String[] { - "2,root.vehicle.d0,1,1,3,0,0,", - "22,root.vehicle.d0,0,0,0,0,0,", - "42,root.vehicle.d0,0,0,0,0,0,", + "2,root.vehicle.d0,1,40000,4.44,null,null,", + "22,root.vehicle.d0,0,null,null,null,null,", + "42,root.vehicle.d0,0,null,null,null,null,", "2,root.vehicle.d1,0,null,null,null,null,", "22,root.vehicle.d1,0,null,null,null,null,", "42,root.vehicle.d1,0,null,null,null,null," @@ -724,20 +726,20 @@ public class IoTDBAlignByDeviceIT { try (ResultSet resultSet = statement.executeQuery( - "select count(*) from root.vehicle.** GROUP BY ([2,50),20ms) align by device")) { + "select count(s0),max_value(s1),max_value(s2),last_value(s3),last_value(s4) from root.vehicle.** GROUP BY ([2,50),20ms) align by device")) { ResultSetMetaData resultSetMetaData = resultSet.getMetaData(); List<Integer> actualIndexToExpectedIndexList = checkHeader( resultSetMetaData, - "Time,Device,count(s0),count(s1),count(s2),count(s3),count(s4)", + "Time,Device,count(s0),max_value(s1),max_value(s2),last_value(s3),last_value(s4)", new int[] { Types.TIMESTAMP, Types.VARCHAR, Types.BIGINT, Types.BIGINT, - Types.BIGINT, - Types.BIGINT, - Types.BIGINT, + Types.FLOAT, + Types.VARCHAR, + Types.BOOLEAN, }); int cnt = 0; diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplate2IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplate2IT.java index a4da0898f75..155f6eceeba 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplate2IT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplate2IT.java @@ -20,24 +20,28 @@ package org.apache.iotdb.db.it.alignbydevice; import org.apache.iotdb.it.env.EnvFactory; +import org.apache.iotdb.itbase.category.ClusterIT; +import org.apache.iotdb.itbase.category.LocalStandaloneIT; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.experimental.categories.Category; /** * Change series_slot_num to 1, to generate more devices which are cross data regions as possible. */ +@Category({LocalStandaloneIT.class, ClusterIT.class}) public class IoTDBAlignByDeviceWithTemplate2IT extends IoTDBAlignByDeviceWithTemplateIT { @BeforeClass - public static void setUp() throws Exception { + public static void setUp() { EnvFactory.getEnv().getConfig().getCommonConfig().setSeriesSlotNum(1); EnvFactory.getEnv().initClusterEnvironment(); insertData(); } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } } diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplate2IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplate3IT.java similarity index 59% copy from integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplate2IT.java copy to integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplate3IT.java index a4da0898f75..8dfcadb7e1e 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplate2IT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplate3IT.java @@ -7,7 +7,7 @@ * "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 + * 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 @@ -20,24 +20,29 @@ package org.apache.iotdb.db.it.alignbydevice; import org.apache.iotdb.it.env.EnvFactory; +import org.apache.iotdb.itbase.category.ClusterIT; +import org.apache.iotdb.itbase.category.LocalStandaloneIT; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.experimental.categories.Category; -/** - * Change series_slot_num to 1, to generate more devices which are cross data regions as possible. - */ -public class IoTDBAlignByDeviceWithTemplate2IT extends IoTDBAlignByDeviceWithTemplateIT { +import static org.apache.iotdb.confignode.it.partition.IoTDBPartitionShuffleStrategyIT.SHUFFLE; + +@Category({LocalStandaloneIT.class, ClusterIT.class}) +public class IoTDBAlignByDeviceWithTemplate3IT extends IoTDBAlignByDeviceWithTemplateIT { @BeforeClass - public static void setUp() throws Exception { - EnvFactory.getEnv().getConfig().getCommonConfig().setSeriesSlotNum(1); + public static void setUp() { + EnvFactory.getEnv().getConfig().getCommonConfig().setSortBufferSize(1024 * 1024); + EnvFactory.getEnv().getConfig().getCommonConfig().setTimePartitionInterval(1); + EnvFactory.getEnv().getConfig().getCommonConfig().setDataPartitionAllocationStrategy(SHUFFLE); EnvFactory.getEnv().initClusterEnvironment(); insertData(); } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } } diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice2IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplateAggregation2IT.java similarity index 56% copy from integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice2IT.java copy to integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplateAggregation2IT.java index 85713e87e5d..e88a6a20419 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice2IT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplateAggregation2IT.java @@ -7,7 +7,7 @@ * "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 + * 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 @@ -20,27 +20,30 @@ package org.apache.iotdb.db.it.alignbydevice; import org.apache.iotdb.it.env.EnvFactory; +import org.apache.iotdb.itbase.category.ClusterIT; +import org.apache.iotdb.itbase.category.LocalStandaloneIT; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.experimental.categories.Category; -import static org.apache.iotdb.db.it.alignbydevice.IoTDBOrderByWithAlignByDeviceIT.insertData; -import static org.apache.iotdb.db.it.alignbydevice.IoTDBOrderByWithAlignByDeviceIT.insertData2; +import static org.apache.iotdb.confignode.it.partition.IoTDBPartitionShuffleStrategyIT.SHUFFLE; -public class IoTDBOrderByLimitOffsetAlignByDevice2IT - extends IoTDBOrderByLimitOffsetAlignByDeviceIT { +@Category({LocalStandaloneIT.class, ClusterIT.class}) +public class IoTDBAlignByDeviceWithTemplateAggregation2IT + extends IoTDBAlignByDeviceWithTemplateAggregationIT { @BeforeClass - public static void setUp() throws Exception { - EnvFactory.getEnv().getConfig().getCommonConfig().setSeriesSlotNum(1); + public static void setUp() { + EnvFactory.getEnv().getConfig().getCommonConfig().setSortBufferSize(1024 * 1024); + EnvFactory.getEnv().getConfig().getCommonConfig().setTimePartitionInterval(1); + EnvFactory.getEnv().getConfig().getCommonConfig().setDataPartitionAllocationStrategy(SHUFFLE); EnvFactory.getEnv().initClusterEnvironment(); insertData(); - insertData2(); - insertData3(); } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } } diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplateAggregationIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplateAggregationIT.java index d8ab1e2c3fc..38f2a961646 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplateAggregationIT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplateAggregationIT.java @@ -72,13 +72,13 @@ public class IoTDBAlignByDeviceWithTemplateAggregationIT { }; @BeforeClass - public static void setUp() throws Exception { + public static void setUp() { EnvFactory.getEnv().initClusterEnvironment(); insertData(); } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplateIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplateIT.java index a71cb773713..350cb47cecd 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplateIT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplateIT.java @@ -63,13 +63,13 @@ public class IoTDBAlignByDeviceWithTemplateIT { String[] retArray; @BeforeClass - public static void setUp() throws Exception { + public static void setUp() { EnvFactory.getEnv().initClusterEnvironment(); insertData(); } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } @@ -970,12 +970,12 @@ public class IoTDBAlignByDeviceWithTemplateIT { String[] expectedHeader = new String[] {"Time,Device,s3,s1,s2"}; String[] retArray = new String[] {}; resultSetEqualTest( - "SELECT * FROM root.sg1.** where time>=now()-1d and time<=now() " + "SELECT * FROM root.sg1.** where time>=now()-1ms and time<=now() " + "ORDER BY TIME DESC ALIGN BY DEVICE;", expectedHeader, retArray); resultSetEqualTest( - "SELECT * FROM root.sg2.** where time>=now()-1d and time<=now() " + "SELECT * FROM root.sg2.** where time>=now()-1ms and time<=now() " + "ORDER BY TIME DESC ALIGN BY DEVICE;", expectedHeader, retArray); diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice2IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice2IT.java index 85713e87e5d..bf8a37833b0 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice2IT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice2IT.java @@ -20,18 +20,22 @@ package org.apache.iotdb.db.it.alignbydevice; import org.apache.iotdb.it.env.EnvFactory; +import org.apache.iotdb.itbase.category.ClusterIT; +import org.apache.iotdb.itbase.category.LocalStandaloneIT; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.experimental.categories.Category; import static org.apache.iotdb.db.it.alignbydevice.IoTDBOrderByWithAlignByDeviceIT.insertData; import static org.apache.iotdb.db.it.alignbydevice.IoTDBOrderByWithAlignByDeviceIT.insertData2; +@Category({LocalStandaloneIT.class, ClusterIT.class}) public class IoTDBOrderByLimitOffsetAlignByDevice2IT extends IoTDBOrderByLimitOffsetAlignByDeviceIT { @BeforeClass - public static void setUp() throws Exception { + public static void setUp() { EnvFactory.getEnv().getConfig().getCommonConfig().setSeriesSlotNum(1); EnvFactory.getEnv().initClusterEnvironment(); insertData(); @@ -40,7 +44,7 @@ public class IoTDBOrderByLimitOffsetAlignByDevice2IT } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } } diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice2IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice3IT.java similarity index 64% copy from integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice2IT.java copy to integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice3IT.java index 85713e87e5d..8b3de311aa8 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice2IT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice3IT.java @@ -7,7 +7,7 @@ * "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 + * 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 @@ -20,19 +20,26 @@ package org.apache.iotdb.db.it.alignbydevice; import org.apache.iotdb.it.env.EnvFactory; +import org.apache.iotdb.itbase.category.ClusterIT; +import org.apache.iotdb.itbase.category.LocalStandaloneIT; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.experimental.categories.Category; +import static org.apache.iotdb.confignode.it.partition.IoTDBPartitionShuffleStrategyIT.SHUFFLE; import static org.apache.iotdb.db.it.alignbydevice.IoTDBOrderByWithAlignByDeviceIT.insertData; import static org.apache.iotdb.db.it.alignbydevice.IoTDBOrderByWithAlignByDeviceIT.insertData2; -public class IoTDBOrderByLimitOffsetAlignByDevice2IT +@Category({LocalStandaloneIT.class, ClusterIT.class}) +public class IoTDBOrderByLimitOffsetAlignByDevice3IT extends IoTDBOrderByLimitOffsetAlignByDeviceIT { @BeforeClass - public static void setUp() throws Exception { - EnvFactory.getEnv().getConfig().getCommonConfig().setSeriesSlotNum(1); + public static void setUp() { + EnvFactory.getEnv().getConfig().getCommonConfig().setSortBufferSize(1024 * 1024); + EnvFactory.getEnv().getConfig().getCommonConfig().setTimePartitionInterval(1); + EnvFactory.getEnv().getConfig().getCommonConfig().setDataPartitionAllocationStrategy(SHUFFLE); EnvFactory.getEnv().initClusterEnvironment(); insertData(); insertData2(); @@ -40,7 +47,7 @@ public class IoTDBOrderByLimitOffsetAlignByDevice2IT } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } } diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDeviceIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDeviceIT.java index 60cf1a5d5f0..99115fdfada 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDeviceIT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDeviceIT.java @@ -41,7 +41,7 @@ import static org.apache.iotdb.db.it.utils.TestUtils.resultSetEqualTest; public class IoTDBOrderByLimitOffsetAlignByDeviceIT { @BeforeClass - public static void setUp() throws Exception { + public static void setUp() { EnvFactory.getEnv().initClusterEnvironment(); insertData(); insertData2(); @@ -49,7 +49,7 @@ public class IoTDBOrderByLimitOffsetAlignByDeviceIT { } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDevice2IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDevice2IT.java index 519f8e76d93..6e6b810d8f2 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDevice2IT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDevice2IT.java @@ -20,21 +20,25 @@ package org.apache.iotdb.db.it.alignbydevice; import org.apache.iotdb.it.env.EnvFactory; +import org.apache.iotdb.itbase.category.ClusterIT; +import org.apache.iotdb.itbase.category.LocalStandaloneIT; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.experimental.categories.Category; +@Category({LocalStandaloneIT.class, ClusterIT.class}) public class IoTDBOrderByWithAlignByDevice2IT extends IoTDBOrderByWithAlignByDeviceIT { @BeforeClass - public static void setUp() throws Exception { + public static void setUp() { EnvFactory.getEnv().getConfig().getCommonConfig().setDegreeOfParallelism(4); EnvFactory.getEnv().initClusterEnvironment(); insertData(); } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } } diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDevice3IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDevice3IT.java index 011972ea471..c5a9fd465c5 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDevice3IT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDevice3IT.java @@ -20,21 +20,25 @@ package org.apache.iotdb.db.it.alignbydevice; import org.apache.iotdb.it.env.EnvFactory; +import org.apache.iotdb.itbase.category.ClusterIT; +import org.apache.iotdb.itbase.category.LocalStandaloneIT; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.experimental.categories.Category; +@Category({LocalStandaloneIT.class, ClusterIT.class}) public class IoTDBOrderByWithAlignByDevice3IT extends IoTDBOrderByWithAlignByDeviceIT { @BeforeClass - public static void setUp() throws Exception { + public static void setUp() { EnvFactory.getEnv().getConfig().getCommonConfig().setSeriesSlotNum(1); EnvFactory.getEnv().initClusterEnvironment(); insertData(); } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } } diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDevice2IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDevice4IT.java similarity index 58% copy from integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDevice2IT.java copy to integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDevice4IT.java index 519f8e76d93..fac649b2a96 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDevice2IT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDevice4IT.java @@ -7,7 +7,7 @@ * "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 + * 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 @@ -20,21 +20,30 @@ package org.apache.iotdb.db.it.alignbydevice; import org.apache.iotdb.it.env.EnvFactory; +import org.apache.iotdb.itbase.category.ClusterIT; +import org.apache.iotdb.itbase.category.LocalStandaloneIT; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.experimental.categories.Category; -public class IoTDBOrderByWithAlignByDevice2IT extends IoTDBOrderByWithAlignByDeviceIT { +import static org.apache.iotdb.confignode.it.partition.IoTDBPartitionShuffleStrategyIT.SHUFFLE; + +@Category({LocalStandaloneIT.class, ClusterIT.class}) +public class IoTDBOrderByWithAlignByDevice4IT extends IoTDBOrderByWithAlignByDeviceIT { @BeforeClass - public static void setUp() throws Exception { - EnvFactory.getEnv().getConfig().getCommonConfig().setDegreeOfParallelism(4); + public static void setUp() { + EnvFactory.getEnv().getConfig().getCommonConfig().setSortBufferSize(1024 * 1024); + EnvFactory.getEnv().getConfig().getCommonConfig().setTimePartitionInterval(timeGap); + EnvFactory.getEnv().getConfig().getCommonConfig().setDataPartitionAllocationStrategy(SHUFFLE); EnvFactory.getEnv().initClusterEnvironment(); insertData(); + insertData2(); } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } } diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDeviceIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDeviceIT.java index 610c831170e..a8c40bc7ae1 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDeviceIT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDeviceIT.java @@ -72,14 +72,14 @@ public class IoTDBOrderByWithAlignByDeviceIT { public static final Map<String, double[]> deviceToAvgPrecipitation = new HashMap<>(); @BeforeClass - public static void setUp() throws Exception { + public static void setUp() { EnvFactory.getEnv().initClusterEnvironment(); insertData(); insertData2(); } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBShuffleSink1IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBShuffleSink1IT.java index 484fd5d9d94..095783fdd20 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBShuffleSink1IT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBShuffleSink1IT.java @@ -36,7 +36,7 @@ import static org.apache.iotdb.db.it.utils.TestUtils.resultSetEqualTest; @RunWith(IoTDBTestRunner.class) @Category({LocalStandaloneIT.class, ClusterIT.class}) public class IoTDBShuffleSink1IT { - private static final String[] SINGLE_SERIES = + protected static final String[] SINGLE_SERIES = new String[] { "create database root.single", "insert into root.single.d1(time,s1) values (1,2)", @@ -45,7 +45,7 @@ public class IoTDBShuffleSink1IT { "insert into root.single.d2(time,s1) values (now(),5)" }; // two devices - private static final String[] MULTI_SERIES = + protected static final String[] MULTI_SERIES = new String[] { "create database root.sg", "insert into root.sg.d1(time,s1,s2) values (1,2,2)", @@ -55,7 +55,7 @@ public class IoTDBShuffleSink1IT { }; @BeforeClass - public static void setUp() throws Exception { + public static void setUp() { EnvFactory.getEnv().getConfig().getCommonConfig().setSeriesSlotNum(1); EnvFactory.getEnv().getConfig().getCommonConfig().setDataRegionGroupExtensionPolicy("CUSTOM"); EnvFactory.getEnv().getConfig().getCommonConfig().setDefaultDataRegionGroupNumPerDatabase(2); @@ -65,7 +65,7 @@ public class IoTDBShuffleSink1IT { } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice2IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBShuffleSink1_2IT.java similarity index 51% copy from integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice2IT.java copy to integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBShuffleSink1_2IT.java index 85713e87e5d..58ca0947f17 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice2IT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBShuffleSink1_2IT.java @@ -7,7 +7,7 @@ * "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 + * 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 @@ -20,27 +20,34 @@ package org.apache.iotdb.db.it.alignbydevice; import org.apache.iotdb.it.env.EnvFactory; +import org.apache.iotdb.itbase.category.ClusterIT; +import org.apache.iotdb.itbase.category.LocalStandaloneIT; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.experimental.categories.Category; -import static org.apache.iotdb.db.it.alignbydevice.IoTDBOrderByWithAlignByDeviceIT.insertData; -import static org.apache.iotdb.db.it.alignbydevice.IoTDBOrderByWithAlignByDeviceIT.insertData2; +import static org.apache.iotdb.confignode.it.partition.IoTDBPartitionShuffleStrategyIT.SHUFFLE; +import static org.apache.iotdb.db.it.utils.TestUtils.prepareData; -public class IoTDBOrderByLimitOffsetAlignByDevice2IT - extends IoTDBOrderByLimitOffsetAlignByDeviceIT { +@Category({LocalStandaloneIT.class, ClusterIT.class}) +public class IoTDBShuffleSink1_2IT extends IoTDBShuffleSink1IT { @BeforeClass - public static void setUp() throws Exception { + public static void setUp() { EnvFactory.getEnv().getConfig().getCommonConfig().setSeriesSlotNum(1); + EnvFactory.getEnv().getConfig().getCommonConfig().setDataRegionGroupExtensionPolicy("CUSTOM"); + EnvFactory.getEnv().getConfig().getCommonConfig().setDefaultDataRegionGroupNumPerDatabase(2); + EnvFactory.getEnv().getConfig().getCommonConfig().setSortBufferSize(1024 * 1024); + EnvFactory.getEnv().getConfig().getCommonConfig().setTimePartitionInterval(1); + EnvFactory.getEnv().getConfig().getCommonConfig().setDataPartitionAllocationStrategy(SHUFFLE); EnvFactory.getEnv().initClusterEnvironment(); - insertData(); - insertData2(); - insertData3(); + prepareData(SINGLE_SERIES); + prepareData(MULTI_SERIES); } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } } diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBShuffleSink2IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBShuffleSink2IT.java index cd29526e956..17368548d85 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBShuffleSink2IT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBShuffleSink2IT.java @@ -36,7 +36,7 @@ import static org.apache.iotdb.db.it.utils.TestUtils.resultSetEqualTest; @RunWith(IoTDBTestRunner.class) @Category({LocalStandaloneIT.class, ClusterIT.class}) public class IoTDBShuffleSink2IT { - private static final String[] SINGLE_SERIES = + protected static final String[] SINGLE_SERIES = new String[] { "create database root.single", "insert into root.single.d1(time,s1) values (1,1)", @@ -48,7 +48,7 @@ public class IoTDBShuffleSink2IT { }; // three devices, three data regions - private static final String[] MULTI_SERIES = + protected static final String[] MULTI_SERIES = new String[] { "create database root.sg", "insert into root.sg.d1(time,s1,s2) values (1,1,1)", @@ -60,7 +60,7 @@ public class IoTDBShuffleSink2IT { }; // three devices, three data regions, d3 has only one region - private static final String[] SECOND_MULTI_SERIES = + protected static final String[] SECOND_MULTI_SERIES = new String[] { "create database root.sg1", "insert into root.sg1.d1(time,s1,s2) values (1,1,1)", @@ -71,7 +71,7 @@ public class IoTDBShuffleSink2IT { }; @BeforeClass - public static void setUp() throws Exception { + public static void setUp() { EnvFactory.getEnv().getConfig().getCommonConfig().setSeriesSlotNum(1); EnvFactory.getEnv().getConfig().getCommonConfig().setDataRegionGroupExtensionPolicy("CUSTOM"); EnvFactory.getEnv().getConfig().getCommonConfig().setDefaultDataRegionGroupNumPerDatabase(3); @@ -82,7 +82,7 @@ public class IoTDBShuffleSink2IT { } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice2IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBShuffleSink2_2IT.java similarity index 50% copy from integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice2IT.java copy to integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBShuffleSink2_2IT.java index 85713e87e5d..2272e53ec95 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice2IT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBShuffleSink2_2IT.java @@ -7,7 +7,7 @@ * "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 + * 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 @@ -20,27 +20,34 @@ package org.apache.iotdb.db.it.alignbydevice; import org.apache.iotdb.it.env.EnvFactory; +import org.apache.iotdb.itbase.category.ClusterIT; +import org.apache.iotdb.itbase.category.LocalStandaloneIT; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.experimental.categories.Category; -import static org.apache.iotdb.db.it.alignbydevice.IoTDBOrderByWithAlignByDeviceIT.insertData; -import static org.apache.iotdb.db.it.alignbydevice.IoTDBOrderByWithAlignByDeviceIT.insertData2; - -public class IoTDBOrderByLimitOffsetAlignByDevice2IT - extends IoTDBOrderByLimitOffsetAlignByDeviceIT { +import static org.apache.iotdb.confignode.it.partition.IoTDBPartitionShuffleStrategyIT.SHUFFLE; +import static org.apache.iotdb.db.it.utils.TestUtils.prepareData; +@Category({LocalStandaloneIT.class, ClusterIT.class}) +public class IoTDBShuffleSink2_2IT extends IoTDBShuffleSink2IT { @BeforeClass - public static void setUp() throws Exception { + public static void setUp() { EnvFactory.getEnv().getConfig().getCommonConfig().setSeriesSlotNum(1); + EnvFactory.getEnv().getConfig().getCommonConfig().setDataRegionGroupExtensionPolicy("CUSTOM"); + EnvFactory.getEnv().getConfig().getCommonConfig().setDefaultDataRegionGroupNumPerDatabase(3); + EnvFactory.getEnv().getConfig().getCommonConfig().setSortBufferSize(1024 * 1024); + EnvFactory.getEnv().getConfig().getCommonConfig().setTimePartitionInterval(1); + EnvFactory.getEnv().getConfig().getCommonConfig().setDataPartitionAllocationStrategy(SHUFFLE); EnvFactory.getEnv().initClusterEnvironment(); - insertData(); - insertData2(); - insertData3(); + prepareData(SINGLE_SERIES); + prepareData(MULTI_SERIES); + prepareData(SECOND_MULTI_SERIES); } @AfterClass - public static void tearDown() throws Exception { + public static void tearDown() { EnvFactory.getEnv().cleanClusterEnvironment(); } } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java index 4668b25c4c1..420d2ee7170 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java @@ -234,6 +234,7 @@ import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.AlignedSeri import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.DeviceRegionScanNode; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.LastQueryScanNode; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.SeriesAggregationScanNode; +import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.SeriesAggregationSourceNode; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.SeriesScanNode; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.ShowQueriesNode; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.TimeseriesRegionScanNode; @@ -302,6 +303,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -3181,16 +3183,30 @@ public class OperatorTreeGenerator extends PlanVisitor<Operator, LocalExecutionP private Map<String, List<InputLocation>> makeLayout(List<PlanNode> children) { Map<String, List<InputLocation>> outputMappings = new LinkedHashMap<>(); int tsBlockIndex = 0; + // we should keep only one for columns with same name of Agg related node, like we execute + // select count(), avg(); we + // may get two count() columns in one child + // In such case, we make sure that teh values of different columns with same name should be + // totally same for (PlanNode childNode : children) { + // for other nodes, like full outer time join or HorizontallyConcatNode, we should keep + // different columns with same column name + // because they represent different partial agg values of same series + boolean aggRelatedNode = aggRelatedNode(childNode); outputMappings .computeIfAbsent(TIMESTAMP_EXPRESSION_STRING, key -> new ArrayList<>()) .add(new InputLocation(tsBlockIndex, -1)); int valueColumnIndex = 0; + Set<String> hasSeen = new HashSet<>(); for (String columnName : childNode.getOutputColumnNames()) { if (columnName.equals(TIMESTAMP_EXPRESSION_STRING)) { valueColumnIndex++; continue; } + if (aggRelatedNode && !hasSeen.add(columnName)) { + valueColumnIndex++; + continue; + } outputMappings .computeIfAbsent(columnName, key -> new ArrayList<>()) .add(new InputLocation(tsBlockIndex, valueColumnIndex)); @@ -3201,6 +3217,12 @@ public class OperatorTreeGenerator extends PlanVisitor<Operator, LocalExecutionP return outputMappings; } + private static boolean aggRelatedNode(PlanNode planNode) { + return planNode instanceof SeriesAggregationSourceNode + || planNode instanceof AggregationNode + || planNode instanceof AggregationMergeSortNode; + } + private List<TSDataType> getInputColumnTypes(PlanNode node, TypeProvider typeProvider) { if (typeProvider.getTemplatedInfo() == null) { return node.getChildren().stream() diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java index 817bb3a494e..04468515356 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java @@ -179,7 +179,7 @@ public class CommonConfig { private long timePartitionOrigin = 0; /** Time partition interval in milliseconds. */ - private long timePartitionInterval = 604_800_000; + private long timePartitionInterval = 1_000; /** This variable set timestamp precision as millisecond, microsecond or nanosecond. */ private String timestampPrecision = "ms";
