-
Dear Team & Maintainers, I am working at @exasol which is considering implementing an IBIS backend for the EXASOL database. 📑 Note: While going through the IBIS documentation, a few questions arose, QuestionsIs there specific documentation on "how to implement an IBIS Backend"?Don't get me wrong, at first glance it does not seem too complicated based on the existing Backends, What is the project's take on upstreaming new backends?I understand that upstreaming code takes extra efforts on both sides. 📑 Note: Based on your preferred mode of contribution, I would have an extra question for you: In case upstream contributions are preferredDo you have additional expectations except the "obvious" ones like using your code style(s) & checks, e.g.:
In case external plugins are preferredAs far as I could see, "external" backends can't easily make use of the IBIS test suite. Therefore I was wondering if you Appreciate your efforts, thanks in advance! best |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 2 replies
-
@Nicoretti Welcome 👋🏻 ! Thanks for opening the discussion. There's a short blog post on the topic here. I'll reiterate the steps in more detail here so the information remains in a single place for the purposes of our discussion here 🙂 But first, let me try and answer your questions.
😅 Unfortunately no. Part of the reason is that most of the work to introduce a new backend is typically done by people working on ibis full-time and at this point I think most of those poeple have added at least one new backend. We're definitely not averse to having such documentation and I think we're probably at a point where the process is repeatable enough to be documented.
We prefer if a backend exists in the We tried to have third party backends in the past and it proved quite difficult to maintain backwards compatibility because our internals change quite a bit right now. We expect to stabilize at some point (hopefully over the next year), but for now (and probably for the foreseeable future) we'd like new backends to live in the main repository.
That is really great to hear and it most definitely aligns with our mode of operation.
Hopefully not too many:
We would definitely appreciate bug fixes, and ideally some community engagement where it makes sense. For example, if an exasol user has a question about the exasol backend chiming in to help them out would be most welcome. Another area for contribution with respect to the specific backend is keeping up with new features in the exasol product and rolling those into ibis as soon as you'd like them to be available.
We don't have any strict requirements on code coverage, and we have coverage annotations set up for PRs so you can see what lines are not covered when you make the PR. I think our requirements here are pretty loose: avoiding adding a lot of untested code 🙂 We can help with any ambiguities in PR review.
We would really really like it if there was a person or set of people that we could contact directly about the exasol backend for questions, especially if after doing some due diligence looking at documentation and scouring the internet we are unable to find the answer. Whew, okay all that out of the way let's talk implementation! ImplementationHere are the evaluation steps for adding a new backend. Running the backend
Looks like there's an official docker image for exasol, which is great! ✅ It also looks like it's actively maintained. Even better ✅✅ Python Client API
Two for two! Looks like there's an actively maintained official SQLAlchemy dialect as well. Where to Start?
pytest -m exasol This part will take some collaboration because it can be very very annoying to get all the markers done and correct the first time around. So far, this has always been a one-time cost for adding the initial implementation of a new backend and I would expect it to be the same for exasol. There are a bunch of details here to work out and I'm sure you'll have questions, but let's work all that out in a pull request! |
Beta Was this translation helpful? Give feedback.
@Nicoretti Welcome 👋🏻 !
Thanks for opening the discussion.
There's a short blog post on the topic here.
I'll reiterate the steps in more detail here so the information remains in a single place for the purposes of our discussion here 🙂
But first, let me try and answer your questions.
😅 Unfortunately no.
Part of the reason is that most of the work to introduce a new backend is typically done by people working on ibis full-time and at this point I think most of those poeple have added at least one new backend.
We're definitely not averse to having such documentation and I think we're probably at a point where the proce…