-
Notifications
You must be signed in to change notification settings - Fork 56
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
FFI should support using sync client instead of default client #199
Comments
can I take this? |
absolutely! |
@roeap do you have a preference between adding the enum approach vs the explicit builder methods? Also, how many different kinds of engines are there? What is the difference between a sync and default engine? Finally, what's the criteria for success? Is it just |
Btw, running |
Yes -- but it doesn't provide any "engine builder" entry points for the sync client, so the engine couldn't actually do anything. Probably cleanest to create some new builder methods, so the two can coexist peacefully. Not because anyone would actually use both, but if the API don't overlap then there's no risk of confusion about which engine they're working with. We may be able to keep using the same |
That makes sense! For the success criteria, @scovich , what tests do you expect to pass? Should I write new ones? For context, this is my first time really looking at |
In theory, extending the cffi-test to make a second read of the table using sync engine... but I believe @nicklan is working on an improved FFI testing mechanism so I'll defer to him on this. |
Got it. One more question (sorry, noob here): what is the sync engine and what does it do? |
the It's useful to have around if we suspect odd things are happening in the default client due to the complex async stuff there, as it lets us verify that that's where the issue is. |
In particular you can have a look at https://github.com/delta-incubator/delta-kernel-rs/tree/main/kernel/src/engine and see the |
Thanks @nicklan ! Better question, what does an "engine" do in the context of |
An excellent question, that we should probably answer better. The docs have this to say:
Basically it's "here's stuff we think an engine should implement". Things like reading data, evaluating expressions, etc. Then we express all the delta logic in terms of those actions, so we can integrate with any real connector/engine that provides us with their implementation of that trait. We also provide two implementations of it ourselves, in the sync and default engines. This is 1) so we can write unit tests that actually do something, but also 2) because we expect many connectors/engines to just use the default engine and get back arrow data that they can work with. |
I think just having the existing |
Thanks for the in depth description! Let's see if I can get the FFI tests running on Mac. I was having some difficulties earlier. |
## Change list Add sync engine cfg option to the ffi. This will allow us to build with local file paths only (mostly useful for testing). ## How is this tested? Changed `ffi-test.c` to build both a sync and default engine. It should pass both. *Note* This is a draft because I can't get the test to build right. For some reason, the codegenned c code isn't defining the `SYNC-ENGINE` flag. Any ideas @nicklan ## Issue This addresses #199
Done by #223 |
Follow-up to #195 (comment)
tl;dr:
The text was updated successfully, but these errors were encountered: