DuckDB Quack Driver 0.1.0

Driver Version 0.1.0 Release Date 2026-10-22 Tested With DuckDB Quack 2.0

This driver provides ADBC access to a DuckDB server exposed through the Quack remote protocol.

Note

This project is not associated with DuckDB Labs.

Installation & Quickstart

The driver can be installed with dbc :

dbc install quack

Connecting

Connections require verified TLS by default. Start the local development fixture with docker compose up -d --wait test-service. It includes a Caddy TLS proxy with a locally issued certificate, so the example skips verification:

from adbc_driver_manager import dbapi

dbapi.connect(
    driver="quack",
    db_kwargs={"uri": "quack://localhost:9496/?token=quack-secret&tls=skip_verify"},
)

The plaintext endpoint is also available at quack://localhost:9494/?token=quack-secret&tls=false.

Connection String Format

Quack URI syntax:

quack://HOST[:PORT]/?token=TOKEN

Components:

  • Scheme: quack:// (required)

  • HOST: Quack server host (required)

  • PORT: Quack server port (optional)

  • token: shared Quack authentication token (optional)

  • tls: true (default) verifies the server certificate and hostname; false uses plaintext HTTP; skip_verify or skip-verify requires TLS without certificate or hostname verification.

The database option quack.tls accepts the same values and overrides the URI setting regardless of setter order. Changes apply to subsequently initialized connections only. Empty, null, unknown, and duplicate URI tls values are rejected.

Feature & Type Support

Feature DuckDB Quack
Bind Parameters ❌
Bulk Ingestion Create ✅
Append ✅
Create/Append ✅
Replace ✅
Temporary Table ❌
Target Catalog ❌
Target Schema ❌
Non-nullable fields are marked NOT NULL ❌
Catalog (GetObjects) depth=catalogs ✅
depth=db_schemas ✅
depth=tables ✅
depth=columns (all) ✅
Get Parameter Schema ❌
Get Table Schema ❌
Prepared Statements ✅
Transactions ✅

Types

Database to Arrow

Database Type DuckDB Quack

BIGINT

int64

BOOLEAN

bool

DATE

date32[day]

DOUBLE PRECISION

double

INT

int32

NUMERIC

decimal128

REAL

float

SMALLINT

int16

TIME

time64[us]

TIMESTAMP

timestamp[us]

TIMESTAMP WITH TIME ZONE

timestamp[us] (with time zone)

TIMESTAMPTZ

timestamp[us] (with time zone) ⚠️ [1]

TIMESTAMP_MS

timestamp[ms]

TIMESTAMP_NS

timestamp[ns] ⚠️ [2]

TIMESTAMP_S

timestamp[s]

VARBINARY

binary

VARCHAR

string

Arrow to Database

Arrow Type DuckDB Quack Type
Ingest

binary

VARBINARY

binary_view

VARBINARY

bool

BOOLEAN

date32[day]

DATE

decimal128

NUMERIC ⚠️ [3]

double

DOUBLE PRECISION

fixed_size_binary

VARBINARY

float

REAL

int16

SMALLINT

int32

INT

int64

BIGINT

large_binary

VARBINARY

large_string

VARCHAR

string

VARCHAR

string_view

VARCHAR

time32[ms]

TIME [4]

time32[s]

TIME [4]

time64[ns]

TIME

time64[us]

TIME

timestamp[ms]

TIMESTAMP(3)

timestamp[ms] (with time zone)

TIMESTAMP(3) WITH TIME ZONE [5]

timestamp[ns]

TIMESTAMP(9)

timestamp[ns] (with time zone)

TIMESTAMP(9) WITH TIME ZONE

timestamp[s]

TIMESTAMP(0)

timestamp[s] (with time zone)

TIMESTAMP(0) WITH TIME ZONE [5]

timestamp[us]

TIMESTAMP(6)

timestamp[us] (with time zone)

TIMESTAMP(6) WITH TIME ZONE

Compatibility

This driver was tested on:

  • DuckDB Quack 2.0.0

Previous Versions

To see documentation for previous versions of this driver, see the following: