This is an automated email from the ASF dual-hosted git repository.
Caideyipi pushed a commit to branch limit-offset
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/limit-offset by this push:
new 053175b2e94 Fixed Sequence of limit & offset in show-devices (#17558)
053175b2e94 is described below
commit 053175b2e948c5463e46750ff2e0ac2e816f67e8
Author: Caideyipi <[email protected]>
AuthorDate: Tue Apr 28 14:51:13 2026 +0800
Fixed Sequence of limit & offset in show-devices (#17558)
---
.../db/queryengine/plan/planner/LogicalPlanVisitor.java | 4 ++--
.../planner/logical/RegionScanLogicalPlannerTest.java | 8 ++++----
.../planner/logical/SchemaQueryLogicalPlannerTest.java | 17 +++++++++++++++++
3 files changed, 23 insertions(+), 6 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanVisitor.java
index be0b28a0282..69fd1208535 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanVisitor.java
@@ -585,8 +585,8 @@ public class LogicalPlanVisitor extends
StatementVisitor<PlanNode, MPPQueryConte
planBuilder =
planBuilder
.planDeviceRegionScan(analysis.getDevicePathToContextMap(),
false)
- .planLimit(showDevicesStatement.getLimit())
- .planOffset(showDevicesStatement.getOffset());
+ .planOffset(showDevicesStatement.getOffset())
+ .planLimit(showDevicesStatement.getLimit());
return planBuilder.getRoot();
}
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/logical/RegionScanLogicalPlannerTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/logical/RegionScanLogicalPlannerTest.java
index 437cad010e9..2b2d169cafa 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/logical/RegionScanLogicalPlannerTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/logical/RegionScanLogicalPlannerTest.java
@@ -224,13 +224,13 @@ public class RegionScanLogicalPlannerTest {
DeviceRegionScanNode regionScanNode =
new DeviceRegionScanNode(queryId.genPlanNodeId(), deviceContextMap,
false, null);
- LimitNode limitNode = new LimitNode(queryId.genPlanNodeId(), 20);
- limitNode.addChild(regionScanNode);
OffsetNode offsetNode = new OffsetNode(queryId.genPlanNodeId(), 10);
- offsetNode.addChild(limitNode);
+ offsetNode.addChild(regionScanNode);
+ LimitNode limitNode = new LimitNode(queryId.genPlanNodeId(), 20);
+ limitNode.addChild(offsetNode);
PlanNode actualPlan = parseSQLToPlanNode(sql);
- Assert.assertEquals(actualPlan, offsetNode);
+ Assert.assertEquals(actualPlan, limitNode);
}
@Test
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/logical/SchemaQueryLogicalPlannerTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/logical/SchemaQueryLogicalPlannerTest.java
index 60a0d483562..9274e4d0440 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/logical/SchemaQueryLogicalPlannerTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/logical/SchemaQueryLogicalPlannerTest.java
@@ -47,6 +47,7 @@ import
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.GroupByTag
import
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.LimitNode;
import
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.OffsetNode;
import
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.RawDataAggregationNode;
+import
org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.DeviceRegionScanNode;
import
org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationStep;
import
org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.CrossSeriesAggregationDescriptor;
import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
@@ -648,6 +649,22 @@ public class SchemaQueryLogicalPlannerTest {
}
}
+ @Test
+ public void testShowDevicesWithTimeConditionPaginationOrder() {
+ String sql = "SHOW DEVICES root.ln.wf01.wt01 WHERE time >= 10 limit 20
offset 10";
+ try {
+ LimitNode limitNode = (LimitNode) parseSQLToPlanNode(sql);
+ Assert.assertEquals(20, limitNode.getLimit());
+
+ OffsetNode offsetNode = (OffsetNode) limitNode.getChild();
+ Assert.assertEquals(10, offsetNode.getOffset());
+ Assert.assertTrue(offsetNode.getChild() instanceof DeviceRegionScanNode);
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
@Test
public void testCountNodes() {
String sql = "COUNT NODES root.ln LEVEL=1";