quack_protocol 0.1.0

Rust client SDK for DuckDB's experimental Quack remote protocol
Documentation

quack_protocol

Rust client-side SDK for DuckDB's experimental Quack remote protocol.

The crate implements:

  • DuckDB BinarySerializer-compatible primitive, object, logical type, vector, and DataChunk codecs.
  • Quack connection, prepare/query, fetch, append, disconnect, success, and error messages.
  • Async HTTP POST /quack transport using application/duckdb.
  • URI parsing for localhost:9494, quack:host:port, bracketed IPv6, and direct HTTP(S) URLs.
  • SQL literal formatting for positional and named parameters.
use quack_protocol::{QuackClient, QuackClientOptions, Result};

#[tokio::main]
async fn main() -> Result<()> {
    let mut client = QuackClient::connect(
        "localhost:9494",
        QuackClientOptions {
            auth_token: Some("super_secret".to_string()),
            ..Default::default()
        },
    )
    .await?;

    let result = client.query("SELECT 42::INTEGER AS answer").await?;
    println!("{:?}", result.rows()?);

    client.disconnect().await?;
    Ok(())
}

Quack is still experimental upstream and not yet covered by a stable official wire spec. This implementation follows DuckDB's duckdb-quack extension.