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/08 11:48:34 UTC
[iotdb] 01/02: Avoid rebuild TsBlock again in SeriesScanOperator
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 61ee15f3047eb8ee0155936308fad77336e5d74e
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Wed Mar 8 18:01:23 2023 +0800
Avoid rebuild TsBlock again in SeriesScanOperator
---
.../db/mpp/execution/operator/source/SeriesScanOperator.java | 11 +++++++++--
.../apache/iotdb/tsfile/read/common/block/TsBlockBuilder.java | 2 +-
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/SeriesScanOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/SeriesScanOperator.java
index 4032dea5e2..730b3ff1aa 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/SeriesScanOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/SeriesScanOperator.java
@@ -40,6 +40,7 @@ import java.util.concurrent.TimeUnit;
import static com.google.common.base.Preconditions.checkState;
import static java.util.Objects.requireNonNull;
+import static org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder.MAX_LINE_NUMBER;
public class SeriesScanOperator extends AbstractDataSourceOperator {
@@ -173,9 +174,11 @@ public class SeriesScanOperator extends AbstractDataSourceOperator {
}
break;
- } while (System.nanoTime() - start < maxRuntime && !builder.isFull());
+ } while (System.nanoTime() - start < maxRuntime
+ && retainedTsBlock == null
+ && !builder.isFull());
- finished = builder.isEmpty();
+ finished = (retainedTsBlock == null && builder.isEmpty());
return !finished;
} catch (IOException e) {
@@ -234,6 +237,10 @@ public class SeriesScanOperator extends AbstractDataSourceOperator {
}
private void appendToBuilder(TsBlock tsBlock) {
+ if (builder.isEmpty() && tsBlock.getPositionCount() >= MAX_LINE_NUMBER) {
+ retainedTsBlock = tsBlock;
+ return;
+ }
TimeColumnBuilder timeColumnBuilder = builder.getTimeColumnBuilder();
TimeColumn timeColumn = tsBlock.getTimeColumn();
ColumnBuilder columnBuilder = builder.getColumnBuilder(0);
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilder.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilder.java
index c309835a09..4560f54e31 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilder.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilder.java
@@ -46,7 +46,7 @@ public class TsBlockBuilder {
// This could be any other small number.
private static final int DEFAULT_INITIAL_EXPECTED_ENTRIES = 8;
- private static final int MAX_LINE_NUMBER =
+ public static final int MAX_LINE_NUMBER =
TSFileDescriptor.getInstance().getConfig().getMaxTsBlockLineNumber();
private TimeColumnBuilder timeColumnBuilder;