-
Notifications
You must be signed in to change notification settings - Fork 105
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[C] Research Turbodbc/Arrowdantic for developing ODBC-wrapping driver #72
Comments
Hi there 👋 . I am the author of Turbodbc:
Arrowdantic (at the best of my knowledge):
arrow-odbc
Cheers, |
Hi, sorry for typosquatting 🙂 Thanks for the breakdown! The scope here would be lower level than any of these. I suppose I'm mostly curious about how each project achieves their speed objectives. Also, the plan would be to use nanoarrow to avoid bringing in dependencies on libarrow, Boost, or anything like that. |
I don't mind.
Yeah, building that is a pain. Personally I would recommend using one of the Rust implementations (either Cheers, Markus |
To clarify: I was referring the dependencies. I've no experience or knowledge about/with nanoarrow. |
An additional snag is that Unix platforms need unixodbc, which is LGPL, and so I'm not sure we can take a dependency on that from an Apache project. |
Turbodbc indeed requires Boost, but it appears to have a C++ interface, which means we could pull it via ExternalProject/FetchContent. On the other hand, arrow-odbc + our relatively new Rust API definitions is tempting. For me it boils down to whether Turbodbc's optimizations put it ahead of arrow-odbc or not. I think both libraries use SQLBindCol? |
I would recommend to link dynamically against the ODBC driver Manager used by the System. As such you would not package unixODBC, but it would be installed seperatly via e.g. the package manager of the Linux distribution.
Both Best, Markus |
Coming from #2542. An ODBC bridge would be nice for sure, and more generic than SAP HANA support (my original proposal), so I assume more people will benefit. If there is some way I can help, I would be interested in learning about Arrow in depth. |
It needs someone to do the work, broadly. Or someone to sponsor the work, possibly. |
Oh, and for posterity my current preference is to build on top of arrow-odbc and set up the infra to distribute Rust-based drivers for Python et al (though I'm not looking forward to the CMake part of that). Though I'd be curious if there's a performance comparison between Turbodbc and arrow-odbc |
If CMake is not a hard requirement it might be easier to attempt that build system through Meson, since that natively supports Python and Rust |
I think we'd want to ship CMake definitions and the rest of the build infra is all still CMake based, unfortunately |
Sounds good. I'm half committed, but I might just prototype with Meson first and come back to CMake later if I get to the point of something stable. Do our Rust libraries support C/C++ as well or would this just be a Rust + Python driver? |
All the drivers work via C interop so they should support C/C++. |
Arrowdantic: https://github.com/jorgecarleitao/arrowdantic/
Turbodbc: https://github.com/blue-yonder/turbodbc/
arrow-odbc: https://github.com/pacman82/arrow-odbc
The text was updated successfully, but these errors were encountered: