-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Introducing a new optimizer framework for datafusion. #2633
Comments
THanks @liurenjie1024 -- I ran out of time today to review this but I will try and find time tomorrow |
I looked at https://github.com/liurenjie1024/rust-opt-framework for bit today -- it looks very neat and a good example of a more general purpose optimization framework. I would personally be very interested in seeing an Proof Of Concept of this framework connected into DataFusion (aka instead of the existing hard coded ordering https://github.com/apache/arrow-datafusion/blob/894be6719373be85fa777028fe3ec534536660e3/datafusion/core/src/execution/context.rs#L1259-L1278) In terms of features I think are valuable for DataFusion are:
There are probably more things I haven't thought of yet |
Good suggestion, I will write a poc to integrate with datafusion. |
Thanks for raising this @liurenjie1024. I am very interested in this effort since I will likely be spending time contributing to the optimizer rules in the coming weeks. |
Hi, @alamb @andygrove I've finished a simple poc to integrate new optimizer framework: https://github.com/liurenjie1024/rust-opt-framework/tree/main/src/datafusion_poc Here are the general ideas:
You can find an implementation here:
You can find implementation here:
|
Thanks @liurenjie1024 I will review this next week. |
@andygrove @alamb PTAL when you are available, looking forward to hear your feedback |
Hi @liurenjie1024 -- I'll try and find some time this weekend to review this |
I would like to donate this optimizer to datafusion-contrib so that we can develop it with community. |
Sounds like a great idea to me -- sorry I haven't had a chance to review this @liurenjie1024 -- what would you like to call the repo in datafusion-contrib? I can make one for you |
Thanks for response. How about calling it datafusion-dolomite? No special meaning, just came up with something randomly 😂 |
I created https://github.com/datafusion-contrib/datafusion-dolomite and invited you as a maintainer -- let me know if you would like / want admin access as well to that repo |
Thanks, I'll have a try. |
Welcome to join discussion and development in new repo https://github.com/datafusion-contrib/datafusion-dolomite, and we can close this issue. |
There are some discussions about datafusion's optimizer framework in #440 and #1972. And I tried to build a framework based datafusion's expression system with the following features:
Following is an example of removing limit rule, including patten definition and rule implementation:
And the source code can be found here: https://github.com/liurenjie1024/rust-opt-framework
Welcome to discuss and share your thoughts.
The text was updated successfully, but these errors were encountered: