adbc_core 0.19.0

Public abstract API, driver manager and driver exporter
Documentation

Arrow Database Connectivity for Rust

This is a Rust implementation of Arrow Database Connectivity (ADBC).

It currently provides:

  • An abstract Rust API to be implemented by vendor-specific drivers.
  • A driver manager which implements this same API, but dynamically loads drivers internally and forwards calls appropriately using the C API.
  • A driver exporter that takes an implementation of the abstract API and turns it into an object file that implements the C API.
  • A dummy driver implementation for testing and documentation purposes.

Development

To run the integration tests you must:

  1. Install a recent version of protobuf and have its bin (protoc) in path.
  2. Install SQLite and have its dynamic library in path.
  3. Build the official ADBC SQLite driver and ADBC Snowflake driver by following the documentation.
    • Add -DADBC_DRIVER_SNOWFLAKE=ON option to build the Snowflake driver.
  4. Place the resulting object file into your dynamic loader path or set LD_LIBRARY_PATH/DYLD_LIBRARY_PATH appropriately.
  5. Set ADBC_SNOWFLAKE_GO_LIB_DIR appropriately.
  6. Run cargo test --all-features --workspace

Writing Drivers

To write an ADBC driver in Rust you have to:

  1. Create a new library crate with crate-type = ["lib", "cdylib"].
  2. Implement the abstract API which consists of the traits Driver, Database, Connection and Statement.
  3. Export your driver to C with the macro adbc_core::export_driver!.

The resulting object file can then be loaded by other languages through their own driver manager.