Database connectivity API standard and libraries for Apache Arrow https://arrow.apache.org/adbc/
  • C# 43.9%
  • C++ 20%
  • Go 7.3%
  • Java 6.7%
  • Rust 5.4%
  • Other 16.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Bryce Mecum decc3da8aa
fix(c/driver_manager): handle long filenames instead of throwing (#4995)
Copilot review on
https://github.com/apache/arrow-adbc/pull/4939#discussion_r4344728019
found an edge case in the C++ driver manager when strings that are too
long to be valid operating-system-specific file paths are used. The
current implementation uses the variant of `std::filesystem::exists`
that throws and we weren't catching those.

This PR converts those uses to `bool exists( const
std::filesystem::path& p, std::error_code& ec ) noexcept;` and either
ignores the error or handles it an enhances the driver manager error.

This PR was detected with Copilot and I drove Opus 5.5 around. The
changes were tested in CI, see comments in the PR thread.
2026-11-05 16:49:22 -08:00
.github ci: set job timeouts in javascript.yml (#4994) 2026-11-04 11:15:23 +09:00
c fix(c/driver_manager): handle long filenames instead of throwing (#4995) 2026-11-05 16:49:22 -08:00
ci chore(rust): bump rust-toolchain to nightly-2026-11-03 (#4987) 2026-11-04 10:55:17 +09:00
csharp feat(csharp): implement AdbcErrorFromArrayStream for exported and imported streams (#4983) 2026-10-31 06:51:35 -07:00
dev chore: update versions for 26-SNAPSHOT, add changelog for 25 (#4954) 2026-10-27 11:51:22 +09:00
docs docs: add CDN to postrelease tasks (#4974) 2026-10-29 00:15:10 +09:00
glib chore: update versions for 26-SNAPSHOT, add changelog for 25 (#4954) 2026-10-27 11:51:22 +09:00
go fix(c/driver_manager): handle long filenames instead of throwing (#4995) 2026-11-05 16:49:22 -08:00
java chore(java): bump the linters group (#4985) 2026-11-04 08:26:39 +09:00
javascript refactor(javascript): bump napi, avoid double-borrowing (#4989) 2026-11-05 10:07:24 +09:00
python chore: update versions for 26-SNAPSHOT, add changelog for 25 (#4954) 2026-10-27 11:51:22 +09:00
r chore: update versions for 26-SNAPSHOT, add changelog for 25 (#4954) 2026-10-27 11:51:22 +09:00
ruby chore: update versions for 26-SNAPSHOT, add changelog for 25 (#4954) 2026-10-27 11:51:22 +09:00
rust chore(rust): bump rust-toolchain to nightly-2026-11-03 (#4987) 2026-11-04 10:55:17 +09:00
testing@25d16511e8
.asf.yaml chore: remove apparently unsupported .asf.yaml key (#4949) 2026-10-25 09:26:11 +09:00
.clang-format
.clang-tidy
.cmake-format
.codespell-dictionary
.codespell-ignore
.codespellrc
.env chore: bump Go toolchain to 1.26.10 (#4936) 2026-10-21 09:23:09 +09:00
.gitattributes
.gitignore
.gitmodules
.golangci.toml
.pre-commit-config.yaml chore: update google-java-format pre-commit hook (#4942) 2026-10-23 07:56:02 +09:00
AGENTS.md docs: try to head off antisocial agentic behavior in AGENTS.md (#4978) 2026-11-01 12:10:14 +09:00
CHANGELOG.md chore: update versions for 26-SNAPSHOT, add changelog for 25 (#4954) 2026-10-27 11:51:22 +09:00
compose.yaml
CONTRIBUTING.md docs: update contributing guide, set open PR limit (#4940) 2026-10-24 19:58:47 +09:00
LICENSE.txt perf(c/driver/postgresql): vendor boost.int128 for Windows (#4847) 2026-10-04 17:06:36 -07:00
NOTICE.txt
pyrightconfig.json
README.md
ruff.toml

ADBC: Arrow Database Connectivity

License

ADBC is an API standard (version 1.0.0) for database access libraries ("drivers") in C, Go, and Java that uses Arrow for result sets and query parameters. Instead of writing code to convert to and from Arrow data for each individual database, applications can build against the ADBC APIs, and link against drivers that implement the standard. Additionally, a JDBC/ODBC-style driver manager is provided. This also implements the ADBC APIs, but dynamically loads drivers and dispatches calls to them.

Like JDBC/ODBC, the goal is to provide a generic API for multiple databases. ADBC, however, is focused on bulk columnar data retrieval and ingestion through an Arrow-based API rather than attempting to replace JDBC/ODBC in all use cases. Hence, ADBC is complementary to those existing standards.

Like Arrow Flight SQL, ADBC is an Arrow-based way to work with databases. However, Flight SQL is a protocol defining a wire format and network transport as opposed to an API specification. Flight SQL requires a database to specifically implement support for it, while ADBC is a client API specification for wrapping existing database protocols which could be Arrow-native or not. Together, ADBC and Flight SQL offer a fully Arrow-native solution for clients and database vendors.

For more about ADBC, see the introductory blog post.

Status

ADBC versions the API standard and the implementing libraries separately.

The API standard (version 1.0.0) is considered stable, but enhancements may be made.

Libraries are under development. For more details, see the documentation, or read the changelog.

Installation

Please see the documentation.

Documentation

The core API definitions can be read in adbc.h. User documentation can be found at https://arrow.apache.org/adbc

Development and Contributing

For detailed instructions on how to build the various ADBC libraries, see CONTRIBUTING.md.