This is an automated email from the ASF dual-hosted git repository.
caogaofei pushed a commit to branch beyyes/fix_order_by_limit
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/beyyes/fix_order_by_limit by
this push:
new 9e5262d034c fix ut
9e5262d034c is described below
commit 9e5262d034ce9255ce609e7a28d219743fb8b043
Author: Beyyes <[email protected]>
AuthorDate: Thu Oct 12 17:52:18 2023 +0800
fix ut
---
.../iotdb/db/queryengine/execution/operator/process/TopKOperator.java | 2 +-
.../apache/iotdb/db/queryengine/plan/planner/LogicalPlanBuilder.java | 4 +++-
.../apache/iotdb/db/queryengine/plan/planner/LogicalPlanVisitor.java | 3 ++-
.../iotdb/db/queryengine/plan/planner/plan/node/PlanGraphPrinter.java | 2 +-
4 files changed, 7 insertions(+), 4 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TopKOperator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TopKOperator.java
index c5542441bec..448360f315a 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TopKOperator.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TopKOperator.java
@@ -162,7 +162,7 @@ public class TopKOperator extends
AbstractConsumeAllOperator {
}
}
- // if current childIdx tsblock has no value to put into heap
+ // if current childIdx TsBlock has no value to put into heap
// the remaining data will also have no value to put int heap
if (skipCurrentBatch) {
noMoreTsBlocks[childIdx] = true;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanBuilder.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanBuilder.java
index 751fb54e24e..5b3f7f1207b 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanBuilder.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanBuilder.java
@@ -773,7 +773,9 @@ public class LogicalPlanBuilder {
OrderByParameter orderByParameter = new OrderByParameter(sortItemList);
- if (queryStatement.hasLimit() && !queryStatement.isOrderByBasedOnDevice())
{
+ if (queryStatement.hasLimit()
+ && queryStatement.getOrderByComponent() != null
+ && !queryStatement.isOrderByBasedOnDevice()) {
long limitValue =
queryStatement.hasOffset()
? queryStatement.getRowOffset() + queryStatement.getRowLimit()
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 bad986cae68..0e4150bc637 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
@@ -369,7 +369,8 @@ public class LogicalPlanVisitor extends
StatementVisitor<PlanNode, MPPQueryConte
}
private long pushDownLimitToScanNode(QueryStatement queryStatement) {
- // `order by time|device LIMIT N align by device` and no can push down
limitValue to ScanNode
+ // `order by time|device LIMIT N align by device` and no value filter,
+ // can push down limitValue to ScanNode
if (queryStatement.isAlignByDevice()
&& queryStatement.hasLimit()
&& !analysis.hasValueFilter()
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanGraphPrinter.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanGraphPrinter.java
index 4d4c25f218c..3de01571cb4 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanGraphPrinter.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanGraphPrinter.java
@@ -198,7 +198,7 @@ public class PlanGraphPrinter extends
PlanVisitor<List<String>, PlanGraphPrinter
public List<String> visitTopK(TopKNode node, GraphContext context) {
List<String> boxValue = new ArrayList<>();
boxValue.add(String.format("TopK-%s", node.getPlanNodeId().getId()));
- boxValue.add(String.format("ChildrenCount: %d",
node.getChildren().size()));
+ boxValue.add(String.format("LimitValue: %d", node.getTopValue()));
boxValue.add(node.getMergeOrderParameter().toString());
return render(node, boxValue, context);
}