You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2023/03/09 01:48:17 UTC
[iotdb] 01/02: opt page reader
This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch SeriesScanOperatorImprove
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 0139a731a3aa6a4b5539e955e5364e5945737dfb
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Thu Mar 9 09:47:39 2023 +0800
opt page reader
---
.../iotdb/tsfile/read/reader/page/PageReader.java | 18 +++++++++++++-----
.../read/reader/series/PaginationController.java | 4 ++++
2 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/PageReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/PageReader.java
index 795116ccb5..fa165dad7a 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/PageReader.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/PageReader.java
@@ -46,7 +46,7 @@ import static org.apache.iotdb.tsfile.read.reader.series.PaginationController.UN
public class PageReader implements IPageReader {
- private PageHeader pageHeader;
+ private final PageHeader pageHeader;
protected TSDataType dataType;
@@ -70,6 +70,8 @@ public class PageReader implements IPageReader {
private int deleteCursor = 0;
+ private final TsBlock EMPTY;
+
public PageReader(
ByteBuffer pageData,
TSDataType dataType,
@@ -91,6 +93,7 @@ public class PageReader implements IPageReader {
this.timeDecoder = timeDecoder;
this.filter = filter;
this.pageHeader = pageHeader;
+ EMPTY = new TsBlockBuilder(0, Collections.singletonList(dataType)).build();
splitDataToTimeStampAndValue(pageData);
}
@@ -177,10 +180,13 @@ public class PageReader implements IPageReader {
@Override
public TsBlock getAllSatisfiedData() throws IOException {
- TsBlockBuilder builder = new TsBlockBuilder(Collections.singletonList(dataType));
- TimeColumnBuilder timeBuilder = builder.getTimeColumnBuilder();
- ColumnBuilder valueBuilder = builder.getColumnBuilder(0);
if (pageSatisfy()) {
+ TsBlockBuilder builder =
+ new TsBlockBuilder(
+ (int) (pageHeader.getStatistics().getCount() - paginationController.getCurOffset()),
+ Collections.singletonList(dataType));
+ TimeColumnBuilder timeBuilder = builder.getTimeColumnBuilder();
+ ColumnBuilder valueBuilder = builder.getColumnBuilder(0);
switch (dataType) {
case BOOLEAN:
while (timeDecoder.hasNext(timeBuffer)) {
@@ -311,8 +317,10 @@ public class PageReader implements IPageReader {
default:
throw new UnSupportedDataTypeException(String.valueOf(dataType));
}
+ return builder.build();
+ } else {
+ return EMPTY;
}
- return builder.build();
}
@Override
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/PaginationController.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/PaginationController.java
index a35867645a..ac9c7b296c 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/PaginationController.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/PaginationController.java
@@ -54,6 +54,10 @@ public class PaginationController {
curOffset -= rowCount;
}
+ public long getCurOffset() {
+ return curOffset;
+ }
+
public void consumeOffset() {
curOffset--;
}