[release/3.1] Query: Map projection properly when joining 2 tables #20207
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.
When joining 2 tables in relational, we lift the table from inner select expression and copy over projections. If one of this projection is same as any outer projection then we reuse the same projection. That means the associated indexes in inner shaper will go to different indexes rather than in linear fashion.
Fix is to remember which index each projection went and use that rather than applying an offset.
Resolves #19616
Description
Inside Select, if subquery Select contains a constant/parameter, which is in parent Select or other subquery's Select then we project it only once in SQL causing projection indexes mismatch.
Customer Impact
Problematic queries throws exception.
How found
Reported by multiple customers.
Test coverage
Added regression test for scenario in which projection indexes would become non-linear.
Regression?
Yes. From 2.2 to 3.0
Risk
Low. The modified codepath is being used in more than 15,000 tests. It properly takes care of existing working scenarios.