From 605542e862839018edaa16792d8561eeddf54640 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 d18ea9337a882dcb2b84a7c8340de2101254efa7 Mon Sep 17 00:00:00 2001 From: shuwenwei Date: Fri, 31 Oct 2025 16:17:27 +0800 Subject: [PATCH 2/2] rename methods --- .../read/reader/page/AbstractAlignedPageReader.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/AbstractAlignedPageReader.java b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/AbstractAlignedPageReader.java index 9230d486c..214e6d8a7 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/AbstractAlignedPageReader.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/AbstractAlignedPageReader.java @@ -350,7 +350,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); }