This is an automated email from the ASF dual-hosted git repository. lzljs3620320 pushed a commit to branch release-1.3 in repository https://gitbox.apache.org/repos/asf/paimon.git
commit 501d1dbeeb4100c40ebb7fbcbaed4f5f99694c37 Author: yuzelin <[email protected]> AuthorDate: Thu Sep 25 13:57:54 2025 +0800 [arrow] ArrowBatchConverter support reset the reused VectorSchemaRoot (#6322) --- .../apache/paimon/arrow/converter/ArrowBatchConverter.java | 3 +++ .../paimon/arrow/converter/ArrowPerRowBatchConverter.java | 8 ++++++++ .../arrow/converter/ArrowVectorizedBatchConverter.java | 13 +++++++++++++ 3 files changed, 24 insertions(+) diff --git a/paimon-arrow/src/main/java/org/apache/paimon/arrow/converter/ArrowBatchConverter.java b/paimon-arrow/src/main/java/org/apache/paimon/arrow/converter/ArrowBatchConverter.java index 5747a39d21..b38edc6813 100644 --- a/paimon-arrow/src/main/java/org/apache/paimon/arrow/converter/ArrowBatchConverter.java +++ b/paimon-arrow/src/main/java/org/apache/paimon/arrow/converter/ArrowBatchConverter.java @@ -62,6 +62,9 @@ public abstract class ArrowBatchConverter { return root; } + public abstract ArrowBatchConverter copy( + VectorSchemaRoot root, ArrowFieldWriter[] fieldWriters); + protected abstract void doWrite(int maxBatchRows); public void close() { diff --git a/paimon-arrow/src/main/java/org/apache/paimon/arrow/converter/ArrowPerRowBatchConverter.java b/paimon-arrow/src/main/java/org/apache/paimon/arrow/converter/ArrowPerRowBatchConverter.java index 9ee495c849..16e0bfbd1d 100644 --- a/paimon-arrow/src/main/java/org/apache/paimon/arrow/converter/ArrowPerRowBatchConverter.java +++ b/paimon-arrow/src/main/java/org/apache/paimon/arrow/converter/ArrowPerRowBatchConverter.java @@ -36,6 +36,14 @@ public class ArrowPerRowBatchConverter extends ArrowBatchConverter { super(root, fieldWriters); } + @Override + public ArrowPerRowBatchConverter copy(VectorSchemaRoot root, ArrowFieldWriter[] fieldWriters) { + ArrowPerRowBatchConverter newConverter = new ArrowPerRowBatchConverter(root, fieldWriters); + newConverter.iterator = this.iterator; + newConverter.currentRow = this.currentRow; + return newConverter; + } + @Override public void doWrite(int maxBatchRows) { int rowIndex = 0; diff --git a/paimon-arrow/src/main/java/org/apache/paimon/arrow/converter/ArrowVectorizedBatchConverter.java b/paimon-arrow/src/main/java/org/apache/paimon/arrow/converter/ArrowVectorizedBatchConverter.java index 06dc8d6467..a7da552ed3 100644 --- a/paimon-arrow/src/main/java/org/apache/paimon/arrow/converter/ArrowVectorizedBatchConverter.java +++ b/paimon-arrow/src/main/java/org/apache/paimon/arrow/converter/ArrowVectorizedBatchConverter.java @@ -46,6 +46,19 @@ public class ArrowVectorizedBatchConverter extends ArrowBatchConverter { super(root, fieldWriters); } + @Override + public ArrowVectorizedBatchConverter copy( + VectorSchemaRoot root, ArrowFieldWriter[] fieldWriters) { + ArrowVectorizedBatchConverter newConverter = + new ArrowVectorizedBatchConverter(root, fieldWriters); + newConverter.iterator = this.iterator; + newConverter.batch = this.batch; + newConverter.pickedInColumn = this.pickedInColumn; + newConverter.totalNumRows = this.totalNumRows; + newConverter.startIndex = this.startIndex; + return newConverter; + } + @Override public void doWrite(int maxBatchRows) { int batchRows = Math.min(maxBatchRows, totalNumRows - startIndex);
