[5.0.1] Query: Don't clear projection mapping when adding single projection #23299
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.
Sometimes reclaiming memory is not the best thing to do. You never know what you will need in future.
Resolves #23266
Description
In 5.0, we cleared the projection mapping when adding single projection to SelectExpression. However, this is still needed if there are further subqueries to be translated in the projection. We don't need to clear here since this will be done by the projection translation.
Customer Impact
Regression for any query which is evaluating on client for final projection (common) and also doing FirstOrDefault (or friends) on a non-primitive type will fail with exception.
How found
Customer reported on 5.0.
Test coverage
Added test for affected scenario and existing scenario also working since clearing is happening later automatically.
Regression?
Yes, from 3.1.
Risk
Low. Defers clearing till it is actually needed and appropriate.