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";

Reply via email to