This is an automated email from the ASF dual-hosted git repository. jackietien pushed a commit to branch IntoMemoryPartialFix-1.3 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 62ad263486d4891d9eb09c24278a3ad264bf2143 Author: JackieTien97 <[email protected]> AuthorDate: Mon Jan 5 09:58:52 2026 +0800 Improve DeviceViewIntoOperator's return style to pipeline --- .../execution/operator/process/AbstractIntoOperator.java | 6 ++++-- .../execution/operator/process/DeviceViewIntoOperator.java | 10 ++++++++++ .../queryengine/execution/operator/process/IntoOperator.java | 5 +++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractIntoOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractIntoOperator.java index 99317ba7b09..507e6946bcf 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractIntoOperator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractIntoOperator.java @@ -152,7 +152,7 @@ public abstract class AbstractIntoOperator implements ProcessOperator { checkLastWriteOperation(); if (!processTsBlock(cachedTsBlock)) { - return null; + return tryToReturnPartialResult(); } cachedTsBlock = null; if (child.hasNextWithTimer()) { @@ -160,7 +160,7 @@ public abstract class AbstractIntoOperator implements ProcessOperator { processTsBlock(inputTsBlock); // call child.next only once - return null; + return tryToReturnPartialResult(); } else { return tryToReturnResultTsBlock(); } @@ -218,6 +218,8 @@ public abstract class AbstractIntoOperator implements ProcessOperator { protected abstract TsBlock tryToReturnResultTsBlock(); + protected abstract TsBlock tryToReturnPartialResult(); + protected static List<InsertTabletStatementGenerator> constructInsertTabletStatementGenerators( Map<PartialPath, Map<String, InputLocation>> targetPathToSourceInputLocationMap, Map<PartialPath, Map<String, TSDataType>> targetPathToDataTypeMap, diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/DeviceViewIntoOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/DeviceViewIntoOperator.java index e584f79d1b6..539a65bfede 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/DeviceViewIntoOperator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/DeviceViewIntoOperator.java @@ -144,6 +144,16 @@ public class DeviceViewIntoOperator extends AbstractIntoOperator { return resultTsBlockBuilder.build(); } + @Override + protected TsBlock tryToReturnPartialResult() { + if (resultTsBlockBuilder.isFull()) { + TsBlock res = resultTsBlockBuilder.build(); + resultTsBlockBuilder.reset(); + return res; + } + return null; + } + private List<AbstractIntoOperator.InsertTabletStatementGenerator> constructInsertTabletStatementGeneratorsByDevice(String currentDevice) { Map<PartialPath, Map<String, InputLocation>> targetPathToSourceInputLocationMap = diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/IntoOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/IntoOperator.java index 5e516eeacfa..a30cab76ae0 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/IntoOperator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/IntoOperator.java @@ -102,6 +102,11 @@ public class IntoOperator extends AbstractIntoOperator { return constructResultTsBlock(); } + @Override + protected TsBlock tryToReturnPartialResult() { + return null; + } + private TsBlock constructResultTsBlock() { List<TSDataType> outputDataTypes = ColumnHeaderConstant.selectIntoColumnHeaders.stream()
