exarrow-rs 0.12.0

ADBC-compatible driver for Exasol with Arrow data format support
docs.rs failed to build exarrow-rs-0.12.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: exarrow-rs-0.10.0

exarrow-rs logo

Crates.io Documentation Rust CI License: MIT

ADBC-compatible driver for Exasol with Apache Arrow data format support.


Add to your project

cargo add exarrow-rs
cargo add tokio --features rt-multi-thread,macros

Quick Start

use exarrow_rs::adbc::Driver;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let driver = Driver::new();
    let database = driver.open("exasol://user:pwd@localhost:8563/my_schema")?;
    // The URI schema (/my_schema) is applied server-side automatically during connect().
    // No manual set_schema() call is needed.
    let mut connection = database.connect().await?;

    let results = connection.query("SELECT * FROM customers").await?;
    for batch in results {
        println!("Got {} rows", batch.num_rows());
    }

    connection.close().await?;
    Ok(())
}

Transport

exarrow-rs uses the native TCP protocol by default — Exasol's binary wire protocol with direct Arrow conversion and no intermediate JSON serialization. No extra configuration is needed.

The WebSocket transport is available as an opt-in alternative for compatibility or testing:

[dependencies]
exarrow-rs = { version = "0.11", features = ["websocket"] }
let db = driver.open("exasol://user:pwd@host:8563?transport=websocket")?;

See Transport Protocol in the docs for feature flags and build options.


Documentation

See docs/ for comprehensive documentation:


License

Community-supported. Licensed under MIT.


Build with Rust 🦀 and made with ❤️

Based on a prototype by marconae, now maintained by Exasol Labs 🧪.