Pure Go · DuckDB Quack protocol

    The DuckDB Quack ADBC driver

    A pure-Go ADBC driver for DuckDB’s native Quack client-server protocol. Talk to a Quack server from any ADBC language, and bridge Quack data into GizmoSQL, Oracle, or Db2 through the shared Arrow interface.

    $ pip install adbc-driver-quack

    Pure Go

    A from-scratch Go implementation of DuckDB's Quack client-server protocol, packaged as an ADBC driver — reachable from Python, Go, and every other ADBC language.

    Bridge to anything ADBC

    Because it is Arrow-native, a Quack server bridges directly to GizmoSQL, Oracle, or Db2 through the shared ADBC interface — no custom glue.

    Arrow end to end

    Results stream as Apache Arrow record batches, so bulk reads and writes move with minimal CPU and copying — the columnar shape analytics tools want.

    One C API. Every language.

    The examples on this page are in Python, but ADBC exposes each driver as a C-compatible shared library — so the same native core works from Go, Rust, Java, C#, C/C++, JavaScript, and more. One driver, every stack.

    PythonGoRustJavaC#C / C++JavaScriptRRubyKotlin
    Learn more about Apache Arrow ADBC

    Get started

    Install the driver and connect to a DuckDB Quack server — results come back as Apache Arrow.

    1# pip install adbc-driver-quack
    2import adbc_driver_quack.dbapi as quack
    3
    4with quack.connect(uri="quack://localhost:9494") as conn, conn.cursor() as cur:
    5    cur.execute("SELECT * FROM range(10)")
    6    print(cur.fetch_arrow_table())

    Bridge Quack to GizmoSQL

    One driver’s reader is another driver’s ingest input. Move data from a Quack server into GizmoSQL — or Oracle or Db2 — without materialising it on the client.

    1# Bridge Quack ↔ GizmoSQL (or Oracle / Db2) through the shared Arrow interface
    2import adbc_driver_quack.dbapi as quack
    3import adbc_driver_gizmosql.dbapi as gizmosql
    4
    5with quack.connect(uri=quack_uri) as src, \
    6     gizmosql.connect(gizmosql_uri, username="token", password=token) as dst:
    7    with src.cursor() as s, dst.cursor() as d:
    8        s.execute("SELECT * FROM my_table")
    9        d.adbc_ingest(table_name="my_table", data=s.fetch_record_batch(), mode="replace")
    10        dst.commit()

    Quack ADBC driver — FAQ

    What is Quack?

    Quack is DuckDB's native client-server protocol, introduced by DuckDB Labs in 2026. It lets clients talk to a DuckDB server directly, complementing the embedded (in-process) DuckDB experience.

    What does the Quack ADBC driver do?

    It exposes a Quack server through the vendor-neutral ADBC API, so you can query a DuckDB Quack server from Python, Go, R, Rust, C#, C/C++, or JavaScript — and hand its Arrow results to any other ADBC driver.

    How does this relate to GizmoSQL?

    GizmoSQL provides the enterprise layer above the wire — authentication, permissions, multi-tenancy, audit logging, and observability — over Apache Arrow Flight SQL. The Quack driver lets you talk to DuckDB's native protocol too, and bridge Quack data into GizmoSQL through ADBC.

    Is it free?

    Yes, the driver is open source. Install it with a single pip command (adbc-driver-quack).

    Ready to move your data?

    Install GizmoSQL Core for free, pip-install the Quack driver, and stream your first table in minutes.