This is an automated email from the ASF dual-hosted git repository. hui pushed a commit to branch lmh/rmParam in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 5764b867c2b9c0d52a0364191c3e72d36a55de31 Author: Minghui Liu <[email protected]> AuthorDate: Fri Feb 17 10:25:36 2023 +0800 [IOTDB-5538] Deprecate configuration parameter `max_deduplicated_path_num` --- docs/UserGuide/Reference/Common-Config-Manual.md | 9 - .../zh/UserGuide/Reference/Common-Config-Manual.md | 9 - .../iotdb/it/env/cluster/MppCommonConfig.java | 6 - .../it/env/cluster/MppSharedCommonConfig.java | 7 - .../iotdb/it/env/remote/RemoteCommonConfig.java | 5 - .../org/apache/iotdb/itbase/env/CommonConfig.java | 2 - .../iotdb/db/it/query/IoTDBPaginationIT.java | 9 - .../db/integration/IoTDBQueryMemoryControlIT.java | 277 --------------------- .../db/integration/env/StandaloneEnvConfig.java | 7 - .../resources/conf/iotdb-common.properties | 5 - .../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 10 - .../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 12 - .../exception/sql/PathNumOverLimitException.java | 33 --- .../mpp/common/schematree/ClusterSchemaTree.java | 8 +- .../plan/analyze/ColumnPaginationController.java | 34 +-- 15 files changed, 13 insertions(+), 420 deletions(-) diff --git a/docs/UserGuide/Reference/Common-Config-Manual.md b/docs/UserGuide/Reference/Common-Config-Manual.md index b67cd1e92e..605ae340cd 100644 --- a/docs/UserGuide/Reference/Common-Config-Manual.md +++ b/docs/UserGuide/Reference/Common-Config-Manual.md @@ -518,15 +518,6 @@ Different configuration parameters take effect in the following three ways: |Default| true | |Effective|After restarting system| -* max\_deduplicated\_path\_num - -|Name| max\_deduplicated\_path\_num | -|:---:|:---| -|Description| allowed max numbers of deduplicated path in one query. | -|Type| Int32 | -|Default| 1000 | -|Effective|After restarting system| - * mpp\_data\_exchange\_core\_pool\_size | Name | mpp\_data\_exchange\_core\_pool\_size | diff --git a/docs/zh/UserGuide/Reference/Common-Config-Manual.md b/docs/zh/UserGuide/Reference/Common-Config-Manual.md index 9ce344097d..74b488806d 100644 --- a/docs/zh/UserGuide/Reference/Common-Config-Manual.md +++ b/docs/zh/UserGuide/Reference/Common-Config-Manual.md @@ -573,15 +573,6 @@ IoTDB ConfigNode 和 DataNode 的公共配置参数位于 `conf` 目录下。 | 默认值 | true | | 改后生效方式 | 重启服务生效 | -* max\_deduplicated\_path\_num - -|名字| max\_deduplicated\_path\_num | -|:---:|:---| -|描述| 单次查询允许的最大路径数。 | -|类型| Int32 | -|默认值| 1000 | -|改后生效方式|重启服务生效| - * mpp\_data\_exchange\_core\_pool\_size | 名字 | mpp\_data\_exchange\_core\_pool\_size | diff --git a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/MppCommonConfig.java b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/MppCommonConfig.java index 389d0f383a..4518e2531d 100644 --- a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/MppCommonConfig.java +++ b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/MppCommonConfig.java @@ -84,12 +84,6 @@ public class MppCommonConfig extends MppBaseConfig implements CommonConfig { return this; } - @Override - public CommonConfig setMaxQueryDeduplicatedPathNum(int maxQueryDeduplicatedPathNum) { - setProperty("max_deduplicated_path_num", String.valueOf(maxQueryDeduplicatedPathNum)); - return this; - } - @Override public CommonConfig setUdfMemoryBudgetInMB(float udfCollectorMemoryBudgetInMB) { // udf_memory_budget_in_mb diff --git a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/MppSharedCommonConfig.java b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/MppSharedCommonConfig.java index 26e6a1d3ba..32e92e7669 100644 --- a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/MppSharedCommonConfig.java +++ b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/MppSharedCommonConfig.java @@ -72,13 +72,6 @@ public class MppSharedCommonConfig implements CommonConfig { return this; } - @Override - public CommonConfig setMaxQueryDeduplicatedPathNum(int maxQueryDeduplicatedPathNum) { - cnConfig.setMaxQueryDeduplicatedPathNum(maxQueryDeduplicatedPathNum); - dnConfig.setMaxQueryDeduplicatedPathNum(maxQueryDeduplicatedPathNum); - return this; - } - @Override public CommonConfig setConfigNodeRegionRatisRPCLeaderElectionTimeoutMaxMs(int maxMs) { cnConfig.setConfigNodeRegionRatisRPCLeaderElectionTimeoutMaxMs(maxMs); diff --git a/integration-test/src/main/java/org/apache/iotdb/it/env/remote/RemoteCommonConfig.java b/integration-test/src/main/java/org/apache/iotdb/it/env/remote/RemoteCommonConfig.java index 9312a0f52d..b47d0cc441 100644 --- a/integration-test/src/main/java/org/apache/iotdb/it/env/remote/RemoteCommonConfig.java +++ b/integration-test/src/main/java/org/apache/iotdb/it/env/remote/RemoteCommonConfig.java @@ -51,11 +51,6 @@ public class RemoteCommonConfig implements CommonConfig { return this; } - @Override - public CommonConfig setMaxQueryDeduplicatedPathNum(int maxQueryDeduplicatedPathNum) { - return this; - } - @Override public CommonConfig setConfigNodeRegionRatisRPCLeaderElectionTimeoutMaxMs(int maxMs) { return this; diff --git a/integration-test/src/main/java/org/apache/iotdb/itbase/env/CommonConfig.java b/integration-test/src/main/java/org/apache/iotdb/itbase/env/CommonConfig.java index 81a50b6ebe..416a043345 100644 --- a/integration-test/src/main/java/org/apache/iotdb/itbase/env/CommonConfig.java +++ b/integration-test/src/main/java/org/apache/iotdb/itbase/env/CommonConfig.java @@ -33,8 +33,6 @@ public interface CommonConfig { CommonConfig setCompressor(String compressor); - CommonConfig setMaxQueryDeduplicatedPathNum(int maxQueryDeduplicatedPathNum); - CommonConfig setConfigNodeRegionRatisRPCLeaderElectionTimeoutMaxMs(int maxMs); CommonConfig setUdfMemoryBudgetInMB(float udfCollectorMemoryBudgetInMB); diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/query/IoTDBPaginationIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/query/IoTDBPaginationIT.java index 024c6877e5..0e1fb007f5 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/query/IoTDBPaginationIT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/query/IoTDBPaginationIT.java @@ -33,7 +33,6 @@ import org.junit.runner.RunWith; import java.util.Arrays; import java.util.List; -import static org.apache.iotdb.db.it.utils.TestUtils.assertTestFail; import static org.apache.iotdb.db.it.utils.TestUtils.prepareData; import static org.apache.iotdb.db.it.utils.TestUtils.resultSetEqualTest; @@ -82,7 +81,6 @@ public class IoTDBPaginationIT { @BeforeClass public static void setUp() throws InterruptedException { - EnvFactory.getEnv().getConfig().getCommonConfig().setMaxQueryDeduplicatedPathNum(2); EnvFactory.getEnv().initClusterEnvironment(); prepareData(SQLs); } @@ -137,11 +135,4 @@ public class IoTDBPaginationIT { resultSetEqualTest(querySQLs.get(0), expectHeaders.get(0), retArrays.get(0)); } } - - @Test - public void pathNumOverLimitTest() { - assertTestFail( - "select * from root.vehicle.d0", - "Too many paths in one query! Currently allowed max deduplicated path number is 2."); - } } diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBQueryMemoryControlIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBQueryMemoryControlIT.java deleted file mode 100644 index fa45615ebf..0000000000 --- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBQueryMemoryControlIT.java +++ /dev/null @@ -1,277 +0,0 @@ -/* - * 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.integration; - -import org.apache.iotdb.integration.env.ConfigFactory; -import org.apache.iotdb.integration.env.EnvFactory; -import org.apache.iotdb.itbase.category.ClusterTest; -import org.apache.iotdb.itbase.category.LocalStandaloneTest; - -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.experimental.categories.Category; - -import java.sql.Connection; -import java.sql.ResultSetMetaData; -import java.sql.SQLException; -import java.sql.Statement; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -@Category({LocalStandaloneTest.class, ClusterTest.class}) -public class IoTDBQueryMemoryControlIT { - - private static final String[] sqls = - new String[] { - "CREATE DATABASE root.ln", - "create timeseries root.ln.wf01.wt01 with datatype=INT32,encoding=PLAIN", - "create timeseries root.ln.wf01.wt02 with datatype=INT32,encoding=PLAIN", - "create timeseries root.ln.wf01.wt03 with datatype=INT32,encoding=PLAIN", - "create timeseries root.ln.wf01.wt04 with datatype=INT32,encoding=PLAIN", - "create timeseries root.ln.wf01.wt05 with datatype=INT32,encoding=PLAIN", - "create timeseries root.ln.wf02.wt01 with datatype=FLOAT,encoding=RLE", - "create timeseries root.ln.wf02.wt02 with datatype=FLOAT,encoding=RLE", - "create timeseries root.ln.wf02.wt03 with datatype=FLOAT,encoding=RLE", - "create timeseries root.ln.wf02.wt04 with datatype=FLOAT,encoding=RLE", - "create timeseries root.ln.wf02.wt05 with datatype=FLOAT,encoding=RLE", - "create timeseries root.ln.wf03.wt01 with datatype=DOUBLE,encoding=PLAIN", - "create timeseries root.ln.wf03.wt02 with datatype=DOUBLE,encoding=PLAIN", - "create timeseries root.ln.wf03.wt03 with datatype=DOUBLE,encoding=PLAIN", - "create timeseries root.ln.wf03.wt04 with datatype=DOUBLE,encoding=PLAIN", - "create timeseries root.ln.wf03.wt05 with datatype=DOUBLE,encoding=PLAIN", - }; - - @BeforeClass - public static void setUp() throws Exception { - ConfigFactory.getConfig().setMaxQueryDeduplicatedPathNum(10); - EnvFactory.getEnv().initBeforeClass(); - createTimeSeries(); - } - - private static void createTimeSeries() { - try (Connection conn = EnvFactory.getEnv().getConnection(); - Statement statement = conn.createStatement()) { - for (String sql : sqls) { - statement.execute(sql); - } - } catch (Exception e) { - e.printStackTrace(); - fail(e.getMessage()); - } - } - - @AfterClass - public static void tearDown() throws Exception { - EnvFactory.getEnv().cleanAfterClass(); - ConfigFactory.getConfig().setMaxQueryDeduplicatedPathNum(1000); - } - - @Test - public void selectWildcard() { - try (Connection connection = EnvFactory.getEnv().getConnection(); - Statement statement = connection.createStatement()) { - try { - statement.execute("select * from root.**"); - } catch (SQLException e) { - assertTrue(e.getMessage().contains("Too many paths in one query!")); - } - - try { - statement.execute("select count(*) from root"); - } catch (SQLException e) { - assertTrue(e.getMessage().contains("Too many paths in one query!")); - } - } catch (Exception e) { - e.printStackTrace(); - fail(e.getMessage()); - } - } - - @Test - public void selectWildcardSlimit10() { - try (Connection connection = EnvFactory.getEnv().getConnection(); - Statement statement = connection.createStatement()) { - statement.execute("select * from root.** slimit 10"); - statement.execute("select count(*) from root slimit 10"); - } catch (SQLException e) { - e.printStackTrace(); - fail(e.getMessage()); - } - } - - @Test - public void selectWildcardSlimit11() { - try (Connection connection = EnvFactory.getEnv().getConnection(); - Statement statement = connection.createStatement()) { - try { - statement.execute("select * from root.** slimit 11"); - } catch (SQLException e) { - assertTrue(e.getMessage().contains("Too many paths in one query!")); - } - - try { - statement.execute("select count(*) from root slimit 11"); - } catch (SQLException e) { - assertTrue(e.getMessage().contains("Too many paths in one query!")); - } - } catch (Exception e) { - e.printStackTrace(); - fail(e.getMessage()); - } - } - - @Test - public void selectWildcardWildcardWildcardSlimit5Soffset7() { - try (Connection connection = EnvFactory.getEnv().getConnection(); - Statement statement = connection.createStatement()) { - statement.execute("select wf01.*, wf02.*, wf03.* from root.ln slimit 5 soffset 7"); - ResultSetMetaData resultSetMetaData = statement.getResultSet().getMetaData(); - assertEquals(1 + 5, resultSetMetaData.getColumnCount()); - for (int i = 2; i < 3 + 2; ++i) { - assertTrue(resultSetMetaData.getColumnName(i).contains("root.ln.wf02.wt0")); - } - for (int i = 3 + 2; i < 5 + 2; ++i) { - assertTrue(resultSetMetaData.getColumnName(i).contains("root.ln.wf03.wt0")); - } - - statement.execute( - "select count(wf01.*), avg(wf02.*), sum(wf03.*) from root.ln slimit 5 soffset 7"); - resultSetMetaData = statement.getResultSet().getMetaData(); - assertEquals(5, resultSetMetaData.getColumnCount()); - for (int i = 1; i < 3 + 1; ++i) { - assertTrue(resultSetMetaData.getColumnName(i).contains("root.ln.wf02.wt0")); - } - for (int i = 3 + 1; i < 5 + 1; ++i) { - assertTrue(resultSetMetaData.getColumnName(i).contains("root.ln.wf03.wt0")); - } - } catch (SQLException e) { - e.printStackTrace(); - fail(e.getMessage()); - } - } - - @Test - public void selectWildcardWildcardWildcardSlimit5Soffset5() { - try (Connection connection = EnvFactory.getEnv().getConnection(); - Statement statement = connection.createStatement()) { - statement.execute("select wf01.*, wf02.*, wf03.* from root.ln slimit 5 soffset 5"); - ResultSetMetaData resultSetMetaData = statement.getResultSet().getMetaData(); - assertEquals(1 + 5, resultSetMetaData.getColumnCount()); - for (int i = 2; i < 5 + 2; ++i) { - assertTrue(resultSetMetaData.getColumnName(i).contains("root.ln.wf02.wt0")); - } - - statement.execute( - "select count(wf01.*), sum(wf02.*), avg(wf03.*) from root.ln slimit 5 soffset 5"); - resultSetMetaData = statement.getResultSet().getMetaData(); - assertEquals(5, resultSetMetaData.getColumnCount()); - for (int i = 1; i < 5 + 1; ++i) { - assertTrue(resultSetMetaData.getColumnName(i).contains("root.ln.wf02.wt0")); - } - } catch (SQLException e) { - e.printStackTrace(); - fail(e.getMessage()); - } - } - - @Test - public void selectWildcardWildcardWildcardSlimit15Soffset5() { - try (Connection connection = EnvFactory.getEnv().getConnection(); - Statement statement = connection.createStatement()) { - statement.execute("select wf01.*, wf03.*, wf02.* from root.ln slimit 15 soffset 5"); - ResultSetMetaData resultSetMetaData = statement.getResultSet().getMetaData(); - assertEquals(1 + 10, resultSetMetaData.getColumnCount()); - for (int i = 2; i < 5 + 2; ++i) { - assertTrue(resultSetMetaData.getColumnName(i).contains("root.ln.wf03.wt0")); - } - for (int i = 5 + 2; i < 10 + 2; ++i) { - assertTrue(resultSetMetaData.getColumnName(i).contains("root.ln.wf02.wt0")); - } - - statement.execute( - "select sum(wf01.*), avg(wf03.*), count(wf02.*) from root.ln slimit 15 soffset 5"); - resultSetMetaData = statement.getResultSet().getMetaData(); - assertEquals(10, resultSetMetaData.getColumnCount()); - for (int i = 1; i < 5 + 1; ++i) { - assertTrue(resultSetMetaData.getColumnName(i).contains("root.ln.wf03.wt0")); - } - for (int i = 5 + 1; i < 10 + 1; ++i) { - assertTrue(resultSetMetaData.getColumnName(i).contains("root.ln.wf02.wt0")); - } - } catch (SQLException e) { - e.printStackTrace(); - fail(e.getMessage()); - } - } - - @Test - public void selectWildcardWildcardWildcardSlimit15Soffset4() { - try (Connection connection = EnvFactory.getEnv().getConnection(); - Statement statement = connection.createStatement()) { - try { - statement.execute("select wf01.*, wf02.*, wf03.* from root.ln slimit 15 soffset 4"); - } catch (SQLException e) { - assertTrue(e.getMessage().contains("Too many paths in one query!")); - } - try { - statement.execute( - "select count(wf01.*), avg(wf02.*), sum(wf03.*) from root.ln slimit 15 soffset 4"); - } catch (SQLException e) { - assertTrue(e.getMessage().contains("Too many paths in one query!")); - } - } catch (Exception e) { - e.printStackTrace(); - fail(e.getMessage()); - } - } - - @Test - public void selectWildcardWildcardWildcardSlimit3Soffset4() { - try (Connection connection = EnvFactory.getEnv().getConnection(); - Statement statement = connection.createStatement()) { - statement.execute("select wf01.*, wf02.*, wf03.* from root.ln slimit 3 soffset 4"); - ResultSetMetaData resultSetMetaData = statement.getResultSet().getMetaData(); - assertEquals(1 + 3, resultSetMetaData.getColumnCount()); - for (int i = 2; i < 1 + 2; ++i) { - assertTrue(resultSetMetaData.getColumnName(i).contains("root.ln.wf01.wt0")); - } - for (int i = 1 + 2; i < 3 + 2; ++i) { - assertTrue(resultSetMetaData.getColumnName(i).contains("root.ln.wf02.wt0")); - } - - statement.execute( - "select sum(wf01.*), count(wf02.*), avg(wf03.*) from root.ln slimit 3 soffset 4"); - resultSetMetaData = statement.getResultSet().getMetaData(); - assertEquals(3, resultSetMetaData.getColumnCount()); - for (int i = 1; i < 1 + 1; ++i) { - assertTrue(resultSetMetaData.getColumnName(i).contains("root.ln.wf01.wt0")); - } - for (int i = 1 + 1; i < 3 + 1; ++i) { - assertTrue(resultSetMetaData.getColumnName(i).contains("root.ln.wf02.wt0")); - } - } catch (SQLException e) { - e.printStackTrace(); - fail(e.getMessage()); - } - } -} diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/env/StandaloneEnvConfig.java b/integration/src/test/java/org/apache/iotdb/db/integration/env/StandaloneEnvConfig.java index 90d332da51..353fd3f011 100644 --- a/integration/src/test/java/org/apache/iotdb/db/integration/env/StandaloneEnvConfig.java +++ b/integration/src/test/java/org/apache/iotdb/db/integration/env/StandaloneEnvConfig.java @@ -60,13 +60,6 @@ public class StandaloneEnvConfig implements BaseConfig { return this; } - public BaseConfig setMaxQueryDeduplicatedPathNum(int maxQueryDeduplicatedPathNum) { - IoTDBDescriptor.getInstance() - .getConfig() - .setMaxQueryDeduplicatedPathNum(maxQueryDeduplicatedPathNum); - return this; - } - public BaseConfig setRpcThriftCompressionEnable(boolean rpcThriftCompressionEnable) { IoTDBDescriptor.getInstance() .getConfig() diff --git a/node-commons/src/assembly/resources/conf/iotdb-common.properties b/node-commons/src/assembly/resources/conf/iotdb-common.properties index 9f9054aef7..f7104a9532 100644 --- a/node-commons/src/assembly/resources/conf/iotdb-common.properties +++ b/node-commons/src/assembly/resources/conf/iotdb-common.properties @@ -374,11 +374,6 @@ cluster_name=defaultCluster # Datatype: boolean # enable_last_cache=true -# Allowed max numbers of deduplicated path in one query -# it's just an advised value, the real limitation will be the smaller one between this and the one we calculated -# Datatype: int -# max_deduplicated_path_num=1000 - # Core size of ThreadPool of MPP data exchange # Datatype: int # mpp_data_exchange_core_pool_size=10 diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java index 749c06efd3..88da5940df 100644 --- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java +++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java @@ -141,8 +141,6 @@ public class IoTDBConfig { /** Memory allocated for the consensus layer */ private long allocateMemoryForConsensus = Runtime.getRuntime().maxMemory() / 10; - private volatile int maxQueryDeduplicatedPathNum = 1000; - /** Ratio of memory allocated for buffered arrays */ private double bufferedArraysMemoryProportion = 0.6; @@ -2486,14 +2484,6 @@ public class IoTDBConfig { RpcTransportFactory.setDefaultBufferCapacity(this.thriftDefaultBufferSize); } - public int getMaxQueryDeduplicatedPathNum() { - return maxQueryDeduplicatedPathNum; - } - - public void setMaxQueryDeduplicatedPathNum(int maxQueryDeduplicatedPathNum) { - this.maxQueryDeduplicatedPathNum = maxQueryDeduplicatedPathNum; - } - public int getCheckPeriodWhenInsertBlocked() { return checkPeriodWhenInsertBlocked; } diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java index 8c5b060644..9c929e5eb9 100644 --- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java +++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java @@ -1401,12 +1401,6 @@ public class IoTDBDescriptor { // update tsfile-format config loadTsFileProps(properties); - // update max_deduplicated_path_num - conf.setMaxQueryDeduplicatedPathNum( - Integer.parseInt( - properties.getProperty( - "max_deduplicated_path_num", - Integer.toString(conf.getMaxQueryDeduplicatedPathNum())))); // update frequency_interval_in_minute conf.setFrequencyIntervalInMinute( Integer.parseInt( @@ -1538,12 +1532,6 @@ public class IoTDBDescriptor { initSchemaMemoryAllocate(properties); initStorageEngineAllocate(properties); - conf.setMaxQueryDeduplicatedPathNum( - Integer.parseInt( - properties.getProperty( - "max_deduplicated_path_num", - Integer.toString(conf.getMaxQueryDeduplicatedPathNum())))); - conf.setEnableQueryMemoryEstimation( Boolean.parseBoolean( properties.getProperty( diff --git a/server/src/main/java/org/apache/iotdb/db/exception/sql/PathNumOverLimitException.java b/server/src/main/java/org/apache/iotdb/db/exception/sql/PathNumOverLimitException.java deleted file mode 100644 index 4160f06e95..0000000000 --- a/server/src/main/java/org/apache/iotdb/db/exception/sql/PathNumOverLimitException.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 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.exception.sql; - -import org.apache.iotdb.db.conf.IoTDBDescriptor; - -public class PathNumOverLimitException extends SemanticException { - - public PathNumOverLimitException() { - super( - String.format( - "Too many paths in one query! Currently allowed max deduplicated path number is %d. " - + "Please use slimit or adjust max_deduplicated_path_num in iotdb-common.properties.", - IoTDBDescriptor.getInstance().getConfig().getMaxQueryDeduplicatedPathNum())); - } -} diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/ClusterSchemaTree.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/ClusterSchemaTree.java index 3708dd77ea..b114f01b27 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/ClusterSchemaTree.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/ClusterSchemaTree.java @@ -23,7 +23,6 @@ import org.apache.iotdb.commons.path.MeasurementPath; import org.apache.iotdb.commons.path.PartialPath; import org.apache.iotdb.commons.utils.PathUtils; import org.apache.iotdb.commons.utils.TestOnly; -import org.apache.iotdb.db.conf.IoTDBDescriptor; import org.apache.iotdb.db.mpp.common.schematree.node.SchemaEntityNode; import org.apache.iotdb.db.mpp.common.schematree.node.SchemaInternalNode; import org.apache.iotdb.db.mpp.common.schematree.node.SchemaMeasurementNode; @@ -84,12 +83,7 @@ public class ClusterSchemaTree implements ISchemaTree { @Override public Pair<List<MeasurementPath>, Integer> searchMeasurementPaths(PartialPath pathPattern) { SchemaTreeVisitorWithLimitOffsetWrapper<MeasurementPath> visitor = - SchemaTreeVisitorFactory.createSchemaTreeMeasurementVisitor( - root, - pathPattern, - false, - IoTDBDescriptor.getInstance().getConfig().getMaxQueryDeduplicatedPathNum() + 1, - 0); + SchemaTreeVisitorFactory.createSchemaTreeMeasurementVisitor(root, pathPattern, false, 0, 0); return new Pair<>(visitor.getAllResult(), visitor.getNextOffset()); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ColumnPaginationController.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ColumnPaginationController.java index 082428664d..65e1d6b829 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ColumnPaginationController.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ColumnPaginationController.java @@ -19,43 +19,39 @@ package org.apache.iotdb.db.mpp.plan.analyze; -import org.apache.iotdb.db.conf.IoTDBDescriptor; -import org.apache.iotdb.db.exception.sql.PathNumOverLimitException; - /** apply MaxQueryDeduplicatedPathNum and SLIMIT & SOFFSET */ public class ColumnPaginationController { - private int curLimit = - IoTDBDescriptor.getInstance().getConfig().getMaxQueryDeduplicatedPathNum() + 1; - private int curOffset; - - // records the path number that the SchemaProcessor totally returned - private int consumed = 0; - // for ALIGN BY DEVICE / DISABLE ALIGN / GROUP BY LEVEL / LAST, controller does is disabled private final boolean isDisabled; + private final boolean hasLimit; + + private int curLimit; + private int curOffset; + public ColumnPaginationController(int seriesLimit, int seriesOffset, boolean isDisabled) { + this.isDisabled = isDisabled; + // for series limit, the default value is 0, which means no limit - this.curLimit = seriesLimit == 0 ? this.curLimit : Math.min(seriesLimit, this.curLimit); + this.hasLimit = seriesLimit == 0; + this.curLimit = seriesLimit; + // series offset for result set. The default value is 0 this.curOffset = seriesOffset; - this.isDisabled = isDisabled; } public boolean hasCurOffset() { if (isDisabled) { return false; } - return curOffset != 0; } public boolean hasCurLimit() { - if (isDisabled) { + if (isDisabled || !hasLimit) { return true; } - return curLimit != 0; } @@ -63,17 +59,11 @@ public class ColumnPaginationController { if (isDisabled) { return; } - curOffset--; } public void consumeLimit() { - consumed++; - if (consumed > IoTDBDescriptor.getInstance().getConfig().getMaxQueryDeduplicatedPathNum()) { - throw new PathNumOverLimitException(); - } - - if (isDisabled) { + if (isDisabled || !hasLimit) { return; } curLimit--;
