Fair enough, thank you. I'll try to expand a bit. (Sorry for the wall of text 
that follows…)

These are the components:

- Core adbc.h header
- Driver manager for C/C++
- Flight SQL-based driver
- Postgres-based driver (WIP)
- SQLite-based driver (more of a testbed for me than an actual component - I 
don't think we'd actually distribute this)
- Java core interfaces
- Java driver manager
- Java JDBC-based driver
- Java Flight SQL-based driver
- Python driver manager

I think: adbc.h gets mirrored into the Arrow repo. The Flight SQL drivers get 
moved to the main Arrow repo and distributed as part of the regular Arrow 
releases.

For the rest of the components: they could be packaged individually, but 
versioned and released together. Also, each C/C++ driver probably needs a 
corresponding Python package so Python users do not have to futz with shared 
library configurations. (See [1].) So for instance, installing PyArrow would 
also give you the Flight SQL driver, and `pip install adbc_postgres` would get 
you the Postgres-based driver.

That would mean setting up separate CI, release, etc. (and eventually linking 
Crossbow & Conbench as well?). That does mean duplication of effort, but the 
trade off is avoiding bloating the main release process even further. However, 
I'd like to hear from those closer to the release process on this subject - if 
it would make people's lives easier, we could merge everything into one 
repo/process.

Integrations would be distributed as part of their respective packages (e.g. 
Arrow Dataset would optionally link to the driver manager). So the "part of 
Arrow 10.0.0" aspect means having a stable interface for adbc.h, and getting 
the Flight SQL drivers into the main repo.

[1]: https://github.com/apache/arrow-adbc/issues/53

On Thu, Aug 25, 2022, at 11:34, Antoine Pitrou wrote:
> On Fri, 19 Aug 2022 14:09:44 -0400
> "David Li" <lidav...@apache.org> wrote:
>> Since it's been a while, I'd like to give an update. There are also a few 
>> questions I have around distribution.
>> 
>> Currently:
>> - Supported in C, Java, and Python.
>> - For C/Python, there are basic drivers wrapping Flight SQL and SQLite, with 
>> a draft of a libpq (Postgres) driver (using nanoarrow).
>> - For Java, there are drivers wrapping JDBC and Flight SQL.
>> - For Python, there's low-level bindings to the C API, and the DBAPI 
>> interface on top of that (+a few extension methods resembling 
>> DuckDB/Turbodbc).
>>  
>> There's drafts of integration with Ibis [1], DBI (R), and DuckDB. (I'd like 
>> to thank Hannes and Kirill for their comments, as well as Antoine, Dewey, 
>> and Matt here.)
>> 
>> I'd like to have this as part of 10.0.0 in some fashion. However, I'm not 
>> sure how we would like to handle packaging and distribution. In particular, 
>> there are several sub-components for each language (the driver manager + the 
>> drivers), increasing the work. Any thoughts here?
>
> Sorry, forgot to answer here. But I think your question is too broadly
> formulated. It probably deserves a case-by-case discussion, IMHO.
>
>> I'm also wondering how we want to handle this in terms of specification - I 
>> assume we'd consider the core header file/Java interfaces a spec like the C 
>> Data Interface/Flight RPC, and vote on them/mirror them into the format/ 
>> directory?
>
> That sounds like the right way to me indeed.
>
> Regards
>
> Antoine.

Reply via email to