[BugFix] Broadcast Join should not generate nondetermistic GRF (backport #44111) #45167
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Why I'm doing:
When broadcast Join is executed on several BE(s), which GRF is adopted by remote Fragments relay on the GRF delivery time, so the first arival wins. so all instances of broadcast JOIN should generate identical GRF. however in two scenarios, this invariant can not be hold.
Another bug is runtime filter push down to wrong side of the left outer join, left anti join, full outer join, right outer join, right anti join when the probe expr of the runtime filter is not the column of the join equivalent predicate. runtime filter pushdown should abide to the principle as the filter pushdown rule.
What I'm doing:
Fixes #issue
What type of PR is this:
Does this PR entail a change in behavior?
If yes, please specify the type of change:
Checklist:
Bugfix cherry-pick branch check:
This is an automatic backport of pull request #44111 done by [Mergify](https://mergify.com). ## Why I'm doing: When broadcast Join is executed on several BE(s), which GRF is adopted by remote Fragments relay on the GRF delivery time, so the first arival wins. so all instances of broadcast JOIN should generate identical GRF. however in two scenarios, this invariant can not be hold. 1. There is Join appears above the broadcast Join, it is generates a runtime filter that take effect on the local right offsprings of the broadcast JOIN, the the right offsprings of broadcast JOIN output different rows. - The upper JOIN is BUCKET SHUFFLE(s) and in the same Fragment as broadcast JOIN, this upper Join generate different local RF. - The upper JOIN is in the different Fragment and generates GRF, but right offsprings of broadcast JOIN receive GRF at different time point, which filter out different rows.
Another bug is runtime filter push down to wrong side of the left outer join, left anti join, full outer join, right outer join, right anti join when the probe expr of the runtime filter is not the column of the join equivalent predicate. runtime filter pushdown should abide to the principle as the filter pushdown rule.
What I'm doing:
Fixes #issue
What type of PR is this:
Does this PR entail a change in behavior?
If yes, please specify the type of change:
Checklist: