diff --git a/extensions/barrage/src/main/java/io/deephaven/extensions/barrage/util/ArrowToTableConverter.java b/extensions/barrage/src/main/java/io/deephaven/extensions/barrage/util/ArrowToTableConverter.java
index 12063e81b6e..8d23a4dc7ef 100644
--- a/extensions/barrage/src/main/java/io/deephaven/extensions/barrage/util/ArrowToTableConverter.java
+++ b/extensions/barrage/src/main/java/io/deephaven/extensions/barrage/util/ArrowToTableConverter.java
@@ -80,6 +80,13 @@ public synchronized void setSchema(final ByteBuffer ipcMessage) {
         parseSchema((Schema) mi.header.header(new Schema()));
     }
 
+    @ScriptApi
+    public synchronized void addRecordBatches(final ByteBuffer... ipcMessages) {
+        for (final ByteBuffer ipcMessage : ipcMessages) {
+            addRecordBatch(ipcMessage);
+        }
+    }
+
     @ScriptApi
     public synchronized void addRecordBatch(final ByteBuffer ipcMessage) {
         if (completed) {
diff --git a/py/server/deephaven/arrow.py b/py/server/deephaven/arrow.py
index 4b2cb6b90b7..b61e62debb1 100644
--- a/py/server/deephaven/arrow.py
+++ b/py/server/deephaven/arrow.py
@@ -104,9 +104,7 @@ def to_table(pa_table: pa.Table, cols: List[str] = None) -> Table:
         j_barrage_table_builder.setSchema(pa_buffer)
 
         record_batches = pa_table.to_batches()
-        for rb in record_batches:
-            pa_buffer = rb.serialize()
-            j_barrage_table_builder.addRecordBatch(pa_buffer)
+        j_barrage_table_builder.addRecordBatches([jpy.byte_buffer(rb.serialize()) for rb in record_batches])
         j_barrage_table_builder.onCompleted()
 
         return Table(j_table=j_barrage_table_builder.getResultTable())