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;
