Skip to content

[Go] Add experimental Arrow Flight ingestion support#134

Open
elenagaljak-db wants to merge 2 commits intomainfrom
arrow_go
Open

[Go] Add experimental Arrow Flight ingestion support#134
elenagaljak-db wants to merge 2 commits intomainfrom
arrow_go

Conversation

@elenagaljak-db
Copy link
Contributor

What changes are proposed in this pull request?

Adds Arrow Flight ingestion to the Go SDK via new C FFI bindings into the Rust layer. The Go side serializes Arrow RecordBatches to IPC bytes, passes them zero-copy across the FFI boundary, and the
Rust SDK handles encoding, framing, and transmission over the Arrow Flight gRPC protocol.

  • New ZerobusArrowStream with IngestBatch, WaitForOffset, Flush, Close, and GetUnackedBatches
  • Configurable IPC compression (LZ4, Zstd)
  • http:// endpoints automatically disable TLS via NoTlsConfig (enables local server testing)
  • Integration tests with Arrow mock server
  • Example in examples/arrow/ and updated README/NEXT_CHANGELOG

How is this tested?

Existing tests and added test with mock server

@elenagaljak-db elenagaljak-db self-assigned this Mar 11, 2026
Signed-off-by: elenagaljak-db <elena.galjak@databricks.com>
@elenagaljak-db elenagaljak-db changed the title Add experimental Arrow Flight ingestion support in GO [Go] Add experimental Arrow Flight ingestion support Mar 12, 2026
Comment on lines +193 to +196
ipcCompression := opts.IPCCompression
if ipcCompression == 0 && opts.IPCCompression == 0 {
ipcCompression = d.IPCCompression
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As we define this:

const (
	// IPCCompressionNone disables Arrow IPC compression (default).
	IPCCompressionNone int32 = -1
	// IPCCompressionLZ4Frame enables LZ4 frame compression.
	IPCCompressionLZ4Frame int32 = 0
	// IPCCompressionZstd enables Zstandard compression.
	IPCCompressionZstd int32 = 1
)

wouldn't this mean that if user requests lz4 compression (as thats 0) will get reverted to using None (as thats the default value)?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Go] Add experimental Arrow Flight support

2 participants