Apache Arrow Flight SQL, production-ready
Flight SQL streams Apache Arrow results over gRPC. Hardcharger, our current DuckDB 2.0 server, uses Chargewire over HTTP with native ADBC, JDBC and JavaScript clients. Existing GizmoSQL servers continue to use Flight SQL; the protocols require different clients.
What is Apache Arrow Flight SQL?
Apache Arrow Flight SQL is a protocol for high-performance, columnar database access over gRPC. It builds on Apache Arrow’s in-memory columnar format and the Arrow Flight RPC framework: a client sends SQL, and the server streams results back as Arrow record batches. Because both sides already speak Arrow, there’s no row-by-row serialization or type conversion — the data moves in the exact shape analytics tools consume it. It’s the modern, columnar successor to JDBC/ODBC for analytical workloads.
Columnar end to end
Results are Apache Arrow record batches — the same columnar layout your analytics tools already use. No row-to-column reshaping on either side.
No row-by-row serialization
Flight SQL skips the per-row encode/decode that throttles JDBC/ODBC on large reads, moving bulk results with minimal CPU and copying.
gRPC streaming + parallelism
Built on Arrow Flight’s gRPC transport, results stream (and can be fetched in parallel), so big result sets arrive fast and predictably.
Existing GizmoSQL: Flight SQL compatibility
GizmoSQL implements Arrow Flight SQL on top of DuckDB, so you get columnar speed with a real, secure server: TLS/mTLS, JWT, SSO/OAuth, permissions, and horizontal scaling. Connect from any language via ADBC, JDBC, or Python.
# pip install adbc-driver-gizmosql
from adbc_driver_gizmosql import dbapi as gizmosql
conn = gizmosql.connect(
"grpc+tls://gizmosql.example.com:31337",
username="user",
password="...",
)
cur = conn.cursor()
cur.execute("SELECT * FROM sales LIMIT 10")
for row in cur:
print(row)Apache Arrow Flight SQL — FAQ
What is Apache Arrow Flight SQL?
Apache Arrow Flight SQL is a protocol for high-performance, columnar database access over gRPC. Built on Apache Arrow’s in-memory format and the Arrow Flight RPC framework, it lets clients send SQL and receive results as Arrow record batches streamed over the network — eliminating the row-by-row serialization and conversion that slow down traditional drivers.
Is Arrow Flight SQL faster than JDBC or ODBC?
For analytical workloads and large result sets, yes. JDBC/ODBC serialize results row-by-row and convert types repeatedly; Flight SQL streams columnar Arrow batches directly, so data moves with far less CPU and copying — especially for the wide, bulk reads analytics depends on.
What is an Arrow Flight SQL server?
A database server that implements the Flight SQL protocol so clients can query it over Arrow Flight. GizmoSQL is an open-source Arrow Flight SQL server powered by DuckDB — add it in front of your data to get fast, secure, columnar SQL access from any language.
How do I connect to a Flight SQL server?
Use an ADBC driver (for GizmoSQL, adbc-driver-gizmosql), a JDBC driver, or the Python client. In Python: gizmosql.connect("grpc+tls://host:31337", username=..., password=...). Mature client libraries exist in nearly every language.
Is the existing GizmoSQL Flight SQL server free?
GizmoSQL Core is Apache-2.0 and free. Enterprise adds SSO/OAuth, fine-grained permissions, session instrumentation, automatic query profiling, and statement queuing for $300 per vCPU per year.