This is an automated email from the ASF dual-hosted git repository.

zhihao pushed a commit to branch test/szh/add_more_tests_for_window_func
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit ebc7bac8ec9f27360a210dc9222c39ad7ed88e0d
Author: Sh-Zh-7 <[email protected]>
AuthorDate: Fri Feb 20 23:33:04 2026 +0800

    Fix TopK operator no PARTITION BY no result bug.
---
 .../operator/GroupedTopNRowNumberBuilder.java          | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/GroupedTopNRowNumberBuilder.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/GroupedTopNRowNumberBuilder.java
index 3118f2bde3f..172adc82bc9 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/GroupedTopNRowNumberBuilder.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/GroupedTopNRowNumberBuilder.java
@@ -49,6 +49,8 @@ public class GroupedTopNRowNumberBuilder implements 
GroupedTopNBuilder {
   private final GroupedTopNRowNumberAccumulator 
groupedTopNRowNumberAccumulator;
   private final TsBlockWithPositionComparator comparator;
 
+  private int effectiveGroupCount = 0;
+
   public GroupedTopNRowNumberBuilder(
       List<TSDataType> sourceTypes,
       TsBlockWithPositionComparator comparator,
@@ -77,10 +79,18 @@ public class GroupedTopNRowNumberBuilder implements 
GroupedTopNBuilder {
 
   @Override
   public void addTsBlock(TsBlock tsBlock) {
-    int[] groupIds = 
groupByHash.getGroupIds(tsBlock.getColumns(groupByChannels));
-    int groupCount = groupByHash.getGroupCount();
+    int[] groupIds;
+    if (groupByChannels.length == 0) {
+      groupIds = new int[tsBlock.getPositionCount()];
+      if (tsBlock.getPositionCount() > 0) {
+        effectiveGroupCount = 1;
+      }
+    } else {
+      groupIds = groupByHash.getGroupIds(tsBlock.getColumns(groupByChannels));
+      effectiveGroupCount = groupByHash.getGroupCount();
+    }
 
-    processTsBlock(tsBlock, groupCount, groupIds);
+    processTsBlock(tsBlock, effectiveGroupCount, groupIds);
   }
 
   @Override
@@ -120,7 +130,7 @@ public class GroupedTopNRowNumberBuilder implements 
GroupedTopNBuilder {
 
   private class ResultIterator extends AbstractIterator<TsBlock> {
     private final TsBlockBuilder tsBlockBuilder;
-    private final int groupIdCount = groupByHash.getGroupCount();
+    private final int groupIdCount = effectiveGroupCount;
     private int currentGroupId = -1;
     private final LongBigArray rowIdOutput = new LongBigArray();
     private long currentGroupSize;

Reply via email to