From 058b75af51d9ee23486323137219c0c50a391f57 Mon Sep 17 00:00:00 2001 From: shuwenwei Date: Fri, 29 Aug 2025 16:46:31 +0800 Subject: [PATCH 1/2] fix bug in PaginationController --- .../tsfile/read/reader/series/PaginationController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/series/PaginationController.java b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/series/PaginationController.java index cbd72a861..93c929469 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/series/PaginationController.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/series/PaginationController.java @@ -81,7 +81,7 @@ public void consumeLimit(long rowCount) { } public boolean hasLimit() { - return hasLimit && curLimit > 0; + return hasLimit && curLimit >= 0; } public TsBlock applyTsBlock(TsBlock resultTsBlock) { @@ -92,7 +92,7 @@ public TsBlock applyTsBlock(TsBlock resultTsBlock) { length -= fromIndex; consumeOffset(fromIndex); } - if (hasLimit && curLimit > 0) { + if (hasLimit()) { length = (int) Math.min(curLimit, length); consumeLimit(length); } From 195d62b3b590b99ff8626b3762293c5d7e975c6a Mon Sep 17 00:00:00 2001 From: shuwenwei Date: Fri, 31 Oct 2025 16:19:50 +0800 Subject: [PATCH 2/2] rename methods --- .../apache/tsfile/read/reader/page/AlignedPageReader.java | 2 +- .../org/apache/tsfile/read/reader/page/PageReader.java | 2 +- .../tsfile/read/reader/series/PaginationController.java | 8 +++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/AlignedPageReader.java b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/AlignedPageReader.java index 5307ed356..0ea24e3a1 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/AlignedPageReader.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/AlignedPageReader.java @@ -457,7 +457,7 @@ public boolean isModified() { @Override public void initTsBlockBuilder(List dataTypes) { - if (paginationController.hasLimit()) { + if (paginationController.hasSetLimit()) { builder = new TsBlockBuilder( (int) diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/PageReader.java b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/PageReader.java index ee74f815d..6b8bef7b2 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/PageReader.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/PageReader.java @@ -214,7 +214,7 @@ public TsBlock getAllSatisfiedData() throws IOException { uncompressDataIfNecessary(); TsBlockBuilder builder; int initialExpectedEntries = (int) pageHeader.getStatistics().getCount(); - if (paginationController.hasLimit()) { + if (paginationController.hasSetLimit()) { initialExpectedEntries = (int) Math.min(initialExpectedEntries, paginationController.getCurLimit()); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/series/PaginationController.java b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/series/PaginationController.java index 93c929469..3ecb0aeb8 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/series/PaginationController.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/series/PaginationController.java @@ -80,8 +80,8 @@ public void consumeLimit(long rowCount) { } } - public boolean hasLimit() { - return hasLimit && curLimit >= 0; + public boolean hasSetLimit() { + return hasLimit; } public TsBlock applyTsBlock(TsBlock resultTsBlock) { @@ -92,7 +92,9 @@ public TsBlock applyTsBlock(TsBlock resultTsBlock) { length -= fromIndex; consumeOffset(fromIndex); } - if (hasLimit()) { + if (hasSetLimit()) { + // When hasLimit is true and methods are called correctly, curLimit must be greater than or + // equal to 0. length = (int) Math.min(curLimit, length); consumeLimit(length); }