You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by hu...@apache.org on 2023/02/17 02:26:06 UTC

[iotdb] 01/01: [IOTDB-5538] Deprecate configuration parameter `max_deduplicated_path_num`

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 <li...@foxmail.com>
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--;