-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
[multistage] default enable dynamic broadcast for SEMI #11696
Conversation
Codecov Report
@@ Coverage Diff @@
## master #11696 +/- ##
============================================
- Coverage 63.10% 63.05% -0.05%
- Complexity 1120 1121 +1
============================================
Files 2343 2343
Lines 125672 125672
Branches 19317 19317
============================================
- Hits 79309 79248 -61
- Misses 40705 40773 +68
+ Partials 5658 5651 -7
Flags with carried forward coverage won't be shown. Click here to find out more. see 22 files with indirect coverage changes 📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more |
JoinInfo joinInfo = join.analyzeCondition(); | ||
RelNode left = join.getLeft() instanceof HepRelVertex ? ((HepRelVertex) join.getLeft()).getCurrentRel() | ||
: join.getLeft(); | ||
RelNode right = join.getRight() instanceof HepRelVertex ? ((HepRelVertex) join.getRight()).getCurrentRel() | ||
: join.getRight(); | ||
return left instanceof Exchange && right instanceof Exchange | ||
&& PinotRuleUtils.noExchangeInSubtree(left.getInput(0)) | ||
&& (join.getJoinType() == JoinRelType.SEMI && joinInfo.nonEquiConditions.isEmpty()); | ||
// default enable dynamic broadcast for SEMI join unless other join strategy were specified | ||
&& (!explicitOtherStrategy && join.getJoinType() == JoinRelType.SEMI && joinInfo.nonEquiConditions.isEmpty()); |
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.
Is dynamic broadcast useful for non-SEMI join? Currently it won't be applied even if we explicitly hint about it
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.
it can be in the future. currently it will only apply to SEMI join
there's no reason not to enable dynamic broadcast for SEMI joins at the current status of multi-stage,
except for the situation where the right table is so large and the left table is not partitioned. in which case we have a fallback option to enable hash table join
joinOptions(join_strategy = 'hash_table')