Skip to main content

Arrow interchange

Arrow supplies typed columnar values and interchange for query results. It is not a storage authority, grant mechanism or query planner. Fuze evaluates plans and emits bounded batches; source adapters retain their own accepted revision, decoding and current-policy rules.

Physical compute columns do not change Arrow IPC schemas, five-state sidecars, output page sizes or buffer ownership. Logical/Unified execution validates each original source page before borrowing it for column predicates. Owned pull-query outputs deep-copy recursive values and remain valid after the compute batch is reset. See physical execution.

Interface boundaries​

InterfaceRole
Arrow IPCVersioned batch/schema bytes for durable capture and transport
Arrow C data/stream interfacesIn-process ownership and release callbacks for compatible consumers
FlightRPC transport for selected Arrow operations
Flight SQLSQL/metadata conventions over Flight
ADBCA client API; the Flight SQL driver connects to the gateway

Support for one boundary does not imply every Arrow type or protocol method. Native unified queries carry five-state nested cells; the Flight gateway serves finite Table v1 with int64 types. It cannot silently flatten arbitrary query Documents or KV projections into that profile.

Local transit_fuze.LogicalArrow exports the richer logical type model, including recursive cells and exact decimal/temporal/128-bit values. The logical Arrow contract defines physical layouts, mandatory schema evidence, five states, ownership and the independent eight-row/4 MiB workspace/64 KiB segment limits. This capability includes local LogicalInspect decoding of one canonical complete segment against an exact supplied schema. Decoded rows and descriptors own their bytes. General external Arrow import, neutral ABI import, C data export and richer Flight output admission have separate contracts and are not enabled by this decoder. Native durable query jobs use these logical segments under their own source and working-set bounds. Fixed encoding-workspace exhaustion is distinct from a host allocator failure.

Ownership and complete results​

Keep the batch schema, validity and field-state representation with its buffers. Respect borrowed lifetimes; retain/copy through the owning API and release native arrays/streams exactly as specified. A release callback cannot run while another consumer still references its buffers. Host cancellation does not automatically join native work or release a live resource safely.

Decode bounded batches and validate full-width identities, lengths and semantic cell states at language boundaries. A readable IPC prefix is not a verified complete query. Result manifests, ordered segment coverage and digests remain necessary; preserve the source basis with the result.

The Transit console renders verified native Arrow batches directly in its default table mode, with typed headings and numeric alignment. It releases each page after presentation. JSON mode emits the lossless foreign-value page envelope.

The shared Zig Arrow implementation and pinned dependencies live under Fuze. Public language wrappers own their native values and release rules above the shared boundary. Use the SDK reference for target packages and queries for recovery.

For remote clients, use Flight SQL and ADBC and its tested client/type matrix. Outbound captured Flight effects use a separate connector; an inbound query ticket does not authorize an outbound RPC or confer data access.