-
Notifications
You must be signed in to change notification settings - Fork 572
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
feat(frontend): add LogicalMultijoin
#2526
Conversation
AFAIK, #1907 and #2425 are designed for two different purposes.
|
Yes, agreed on the differences. This PR is meant more to solve the second issue. The LogicalMultiJoin plannode is just a placeholder and is only meant to last the lifetime of a few optimization passes. It should not be propagated beyond the frontend. I will write up the approach I chose for the heuristic ordering in an RFC. I think once this effort is complete we can see if this LogicalMultiJoin should be reused for delta join or there should be another abstraction. |
By the way, @XieJiann mentioned he was working on this. Did you had any communication? |
Unfortunately not. I was enthusiastic to try out the second part, but it was blocking on the first part, and after some study, I think its not a trivial issue for a new contributor, so I decided to get started to get the ball rolling. My apologies @XieJiann, if you had some ongoing work on it. However, I hope you can help with some of the subtasks and the RFC for heuristic join ordering #2530 if you have come up with any thoughts or solutions! |
I believe this representation is pretty okay even for multi-way delta join rewrite. 🤪 As far as I can see, it's easy make use of this logical plan to create a delta join plan. Regarding join reordering, I think it's okay to have a function called |
Codecov Report
@@ Coverage Diff @@
## main #2526 +/- ##
========================================
Coverage 71.33% 71.33%
========================================
Files 689 691 +2
Lines 88643 88816 +173
========================================
+ Hits 63232 63357 +125
- Misses 25411 25459 +48
Flags with carried forward coverage won't be shown. Click here to find out more.
📣 Codecov can now indicate which changes are the most critical in Pull Requests. Learn more |
Great!
Agree, the join reordering rule (or else) should manipulate on the LogicalMultiJoin node |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM from my side, and maybe other members can give some more comments.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
What's changed and what's your intention?
Adds
LogicalMultiJoin
PlanTreeNode.In a follow up PR (in progress; passes e2e tests reliably but missing unit tests) we will add optimizer rules for converting a
LogicalMultiJoin
into a left-deep join tree with heuristic reordering to avoid cross joins (and prioritize e.g. joins with primary keys in join columns).Refer to a related PR or issue link (optional)
#2425
#1866