Skip to content

docs: add first-principles ADBC driver overview - #18

Open
fornwall wants to merge 1 commit into
mainfrom
docs/adbc-overview
Open

docs: add first-principles ADBC driver overview#18
fornwall wants to merge 1 commit into
mainfrom
docs/adbc-overview

Conversation

@fornwall

Copy link
Copy Markdown
Owner

Adds docs/adbc.md, a big-picture walkthrough of what an ADBC driver is and how one is wired together, written for readers new to Arrow and ADBC.

What it covers

  • The problem ADBC solves — one Arrow-native API across many databases, and how it differs from ODBC/JDBC and Flight SQL.
  • A short Arrow refresher — just enough C Data Interface (ArrowSchema / ArrowArray / ArrowArrayStream) to follow along.
  • The interface shape — the three opaque handle objects (AdbcDatabaseAdbcConnectionAdbcStatement), their New/SetOption/Init/Release lifecycle, and the AdbcStatusCode + AdbcError error model, with a minimal end-to-end example.
  • The shared-library entrypointAdbcDriverInit, the AdbcDriver vtable it fills, and how the version argument keeps old and new binaries compatible.
  • Two ways to consume a driver — linking directly vs. the driver manager that dlopens a driver by name and forwards the public API into its vtable.
  • How drivers are implemented here — the shared CRTP framework in c/driver/framework/, the concrete C/C++ drivers, and pointers to the Go/Java/Rust implementations.

It deliberately stays at the big-picture level and stops short of per-driver internals, with a "where to look next" table for going deeper.

All in-repo links were verified to resolve.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Cx7W5w2mFGh6U774xNBDWD

Add docs/adbc.md, a big-picture walkthrough of what an ADBC driver is and
how one is wired together, aimed at readers new to Arrow and ADBC.

Covers the problem ADBC solves, a short Arrow/C Data Interface refresher,
the three core handle objects (Database/Connection/Statement) and their
lifecycle, error handling, the shared-library AdbcDriverInit entrypoint and
the AdbcDriver vtable, version-based forward compatibility, the two ways to
consume a driver (direct link vs. driver manager), and how the C/C++ drivers
here are implemented on the shared CRTP framework. Stops short of per-driver
internals by design.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cx7W5w2mFGh6U774xNBDWD
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant