Add IT
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 efca7a3..c1418f9 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 68b2c40..5171bad 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/IoTDBAlignByDevice4IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDevice4IT.java new file mode 100644 index 0000000..3b8f269 --- /dev/null +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDevice4IT.java
@@ -0,0 +1,47 @@ +/* + * 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.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; + +@Category({LocalStandaloneIT.class, ClusterIT.class}) +public class IoTDBAlignByDevice4IT extends IoTDBAlignByDeviceIT { + @BeforeClass + 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() { + 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 1bb3e76..bf82d7a 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 @@ }; @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 @@ @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 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 @@ 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 a4da089..155f6ec 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/IoTDBAlignByDeviceWithTemplate3IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplate3IT.java new file mode 100644 index 0000000..8dfcadb --- /dev/null +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplate3IT.java
@@ -0,0 +1,48 @@ +/* + * 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.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; + +@Category({LocalStandaloneIT.class, ClusterIT.class}) +public class IoTDBAlignByDeviceWithTemplate3IT extends IoTDBAlignByDeviceWithTemplateIT { + + @BeforeClass + 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() { + EnvFactory.getEnv().cleanClusterEnvironment(); + } +}
diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplateAggregation2IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplateAggregation2IT.java new file mode 100644 index 0000000..e88a6a2 --- /dev/null +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceWithTemplateAggregation2IT.java
@@ -0,0 +1,49 @@ +/* + * 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.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; + +@Category({LocalStandaloneIT.class, ClusterIT.class}) +public class IoTDBAlignByDeviceWithTemplateAggregation2IT + extends IoTDBAlignByDeviceWithTemplateAggregationIT { + + @BeforeClass + 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() { + 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 d8ab1e2..38f2a96 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 @@ }; @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 a71cb77..350cb47 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 @@ 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 @@ 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 85713e8..bf8a378 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 @@ } @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/IoTDBOrderByLimitOffsetAlignByDevice3IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice3IT.java new file mode 100644 index 0000000..8b3de31 --- /dev/null +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByLimitOffsetAlignByDevice3IT.java
@@ -0,0 +1,53 @@ +/* + * 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.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; + +@Category({LocalStandaloneIT.class, ClusterIT.class}) +public class IoTDBOrderByLimitOffsetAlignByDevice3IT + extends IoTDBOrderByLimitOffsetAlignByDeviceIT { + + @BeforeClass + 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() { + 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 60cf1a5..99115fd 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 @@ public class IoTDBOrderByLimitOffsetAlignByDeviceIT { @BeforeClass - public static void setUp() throws Exception { + public static void setUp() { EnvFactory.getEnv().initClusterEnvironment(); insertData(); insertData2(); @@ -49,7 +49,7 @@ } @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 519f8e7..6e6b810 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 011972e..c5a9fd46 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/IoTDBOrderByWithAlignByDevice4IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDevice4IT.java new file mode 100644 index 0000000..fac649b --- /dev/null +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBOrderByWithAlignByDevice4IT.java
@@ -0,0 +1,49 @@ +/* + * 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.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; + +@Category({LocalStandaloneIT.class, ClusterIT.class}) +public class IoTDBOrderByWithAlignByDevice4IT extends IoTDBOrderByWithAlignByDeviceIT { + + @BeforeClass + 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() { + 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 610c831..a8c40bc 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 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 484fd5d..095783f 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 @@ @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 @@ "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 @@ }; @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 @@ } @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/IoTDBShuffleSink1_2IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBShuffleSink1_2IT.java new file mode 100644 index 0000000..58ca094 --- /dev/null +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBShuffleSink1_2IT.java
@@ -0,0 +1,53 @@ +/* + * 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.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.utils.TestUtils.prepareData; + +@Category({LocalStandaloneIT.class, ClusterIT.class}) +public class IoTDBShuffleSink1_2IT extends IoTDBShuffleSink1IT { + + @BeforeClass + 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(); + prepareData(SINGLE_SERIES); + prepareData(MULTI_SERIES); + } + + @AfterClass + 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 cd29526..1736854 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 @@ @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 @@ }; // 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 @@ }; // 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 @@ }; @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 @@ } @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/IoTDBShuffleSink2_2IT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBShuffleSink2_2IT.java new file mode 100644 index 0000000..2272e53 --- /dev/null +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBShuffleSink2_2IT.java
@@ -0,0 +1,53 @@ +/* + * 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.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.utils.TestUtils.prepareData; + +@Category({LocalStandaloneIT.class, ClusterIT.class}) +public class IoTDBShuffleSink2_2IT extends IoTDBShuffleSink2IT { + @BeforeClass + 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(); + prepareData(SINGLE_SERIES); + prepareData(MULTI_SERIES); + prepareData(SECOND_MULTI_SERIES); + } + + @AfterClass + 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 4668b25..420d2ee 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.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.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 @@ 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 @@ 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 817bb3a..0446851 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 @@ 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";