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:33 UTC

[iotdb] branch SeriesScanOperatorImprove created (now 9550a18e41)

This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a change to branch SeriesScanOperatorImprove
in repository https://gitbox.apache.org/repos/asf/iotdb.git


      at 9550a18e41 fix bug

This branch includes the following new commits:

     new 61ee15f304 Avoid rebuild TsBlock again in SeriesScanOperator
     new 9550a18e41 fix bug

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[iotdb] 01/02: Avoid rebuild TsBlock again in SeriesScanOperator

Posted by ja...@apache.org.
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;


[iotdb] 02/02: fix bug

Posted by ja...@apache.org.
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 9550a18e41ecf7ee25baf3caad9f468eb909fc3b
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Wed Mar 8 19:48:19 2023 +0800

    fix bug
---
 .../org/apache/iotdb/db/mpp/execution/operator/AbstractOperator.java    | 2 +-
 .../iotdb/db/mpp/execution/operator/source/SeriesScanOperator.java      | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/AbstractOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/AbstractOperator.java
index 8e5dc25271..de835fcb8f 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/AbstractOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/AbstractOperator.java
@@ -76,7 +76,7 @@ public abstract class AbstractOperator implements Operator {
   public TsBlock getResultFromRetainedTsBlock() {
     TsBlock res;
     if (retainedTsBlock.getPositionCount() - startOffset <= maxTupleSizeOfTsBlock) {
-      res = retainedTsBlock.subTsBlock(startOffset);
+      res = startOffset == 0 ? retainedTsBlock : retainedTsBlock.subTsBlock(startOffset);
       retainedTsBlock = null;
       startOffset = 0;
     } else {
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 730b3ff1aa..90075bfed2 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
@@ -239,6 +239,7 @@ public class SeriesScanOperator extends AbstractDataSourceOperator {
   private void appendToBuilder(TsBlock tsBlock) {
     if (builder.isEmpty() && tsBlock.getPositionCount() >= MAX_LINE_NUMBER) {
       retainedTsBlock = tsBlock;
+      initializeMaxTsBlockLength(retainedTsBlock);
       return;
     }
     TimeColumnBuilder timeColumnBuilder = builder.getTimeColumnBuilder();