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);

Reply via email to