c,go,java: provide a driver 'framework' or 'base' instead of entirely separate drivers
- Dominant language
- C#
- Stars
- 627
- Forks
- 217
- Avg merge
- 17h
- Merged PRs (30d)
- 57
Description
All the drivers in a language need to follow the same specifications, the same conventions, and have a lot of similar scaffolding. For maintainability's and testing's sake it may make more sense to create base drivers that handle most of the ADBC state and API boundaries and just dispatch to a vendor-specific backend to do things like query execution. We only have SQLite and PostgreSQL for now, but I expect we'll have an ODBC adapter soon. And it seems like the drivers may want more similar functionality than we expect: PostgreSQL decimals, for instance, will likely need type inference in the same way all SQLite type do, if we want to actually convert them to decimals.
It would also make it easier to integrate observability features like detailed logging, OpenTelemetry support, and so on, if we can (mostly) handle them in one place.
Admittedly, a lot of the code is actually in the query execution part, which may not be (easily) shareable. So it may not be as easy of a win as I think.
- [x] #1101
- [ ] #1539
- [x] https://github.com/apache/arrow-adbc/issues/996
- [x] https://github.com/apache/arrow-adbc/issues/1105
- [ ] https://github.com/apache/arrow-adbc/issues/1104
Contributor guide
Research direction
Start by comparing the existing C, Go, and Java drivers and review the unresolved linked issues #1539 and #1104. The scope is complete only when the maintainers agree on a shared driver framework and its boundaries, rather than merely identifying common scaffolding.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c, go, java
- Domain
- backend-api-design, databases
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100