apache / apache/arrow-adbc

c/driver/framework: Modularize C/C++ driver framework?

Open
#2,017 0 comments 0 reactions 0 assignees View on GitHub
Type: enhancement
Dominant language
C#
Stars
627
Forks
217
Avg merge
17h
Merged PRs (30d)
57

Description

### What feature or improvement would you like to see?

I'd like to pick this up soon as part of a broader effort around a portable way to write a driver somewhere else!

We currently have two frameworks:

- https://github.com/apache/arrow-adbc/blob/8ea1ce1381c0110c7e0f4edea0774ba1543f4a2c/c/driver/common/driver_base.h , which is optimized for portability (copy two files) but has no helpers to implement things like catalogs
- https://github.com/apache/arrow-adbc/tree/8ea1ce1381c0110c7e0f4edea0774ba1543f4a2c/c/driver/framework , which is optimized to reduce duplication among C drivers written in this repository (e.g., building catalogs)

The answer is somewhere in the middle! We want (I think) other projects in C/C++ that implement Arrow interfaces to also expose an ADBC interface, ideally ones that they maintain themselves. Some example projects might be:

- DuckDB (already exposes one, implementing all ADBC functionality itself)
- GDAL (exposes ArrowArrayStream input/output and much database-like functionality, including a SQL interface)
- Arrow C++/Acero (can implement a substrait in -> ArrowArrayStream out)

There's a range of existing helpers in those projects for things like formatting errors and building/exporting arrays and I'm wondering if we can accommodate that by factoring out more minimal version of c/driver/framework that replaces c/driver/common/driver_base.h.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.