Recommendations for ODBC

I need to decide (soon) between using the ODBC.jl package, or using ODBC via PyCall.jl.
Back mid 2015, we’d looked at ODBC.jl, but it wasn’t ready at that point, and we ended up making our own MariaDB/MySQL wrapper for what we needed then, but now we really do need ODBC support.
I do know that a lot of work has gone into ODBC in the last year and a half, and would appreciate any guidance.

Thanks in advance for any help!

ODBC via pycall sounds awfully slow.

I don’t have any recent experience with ODBC.jl but it was fairly usable already several years ago, aside from some fairly problematic cross-platform encoding issues, but I believe that @quinnj has addressed those with a significant rewrite since then. I suspect at this point it’s ready or close enough that a little bit of work can get it all the way there for your use case.

A largish rewrite happened about 6 months ago, that resolved almost all outstanding issues on the repo. Since then, things have been more stable. There are a few issues currently open that I’m planning on addressing soon, but nothing major (a few DB-specific issues, for example).

Depending on your timeline, I’m also hoping to be able to abolish the WeakRefStrings package with Jeff’s faster String allocation PR merging soon. That would simplify the package and some of the “riskiest” code IMO.

Happy to address any specific issues/concerns at the repo through issues.

4 Likes

Yes, the problems back when we looked at it were because we needed to have support for decimal floating point and some issues with handling string encodings, and yes, I know that Jacob’s been doing a lot of great work on ODBC (and CSV!) since then. I really would prefer to use a pure Julia implementation!

I noticed that v0.4.x tests were removed, is ODBC.jl still supported for v0.4.x?
If not, I’ll use this to push up us moving to v0.5.0 (and as soon as possible to v0.6.0, esp. if, as you said, you’ll be able to deal with the WeakRefStrings after Jeff’s [much anticipated by me!] String PR gets merged).
I’ll be happy to contribute issues and/or PRs if we do run into any problems.
[BTW, thanks for the continued great work in these areas of the Julia ecosystem, Jacob!]

Correct, 0.4 is no longer supported. I’ll be aiming to support 0.6 fully in the next week or two (after a few more of the “biggie” PRs get merged), and then on to 1.0! But at this point, I don’t expect any major API churn from ODBC itself. The updates happening in 0.6 and even through 1.0 should mainly allow certain optimizations under the hood.

2 Likes