[release/7.0] Fix to #28881 - Consider removing unnecessary CASTs around JSON_VALUE #30442
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.
Ported from #29417
Fixes #28881
Description
JSON queries returning single string properties were adding unnecessary CAST.
Customer impact
Fix improves performance and readability of affected queries. Perf impact can be significant in some cases, basically allowing for index seek instead of a scan.
How found
Found by EF Core engineers.
Regression
No. JSON support has been introduced in 7.0.
Testing
Already significant test coverage (each query test verifies SQL result), added more tests for good measure.
Risk
Minimal: Fix is very isolated, only affects specific JSON scenarios projecting varchar columns - change is to remove the cast to nvarchar(max) around columns that are already strings. Added quirk to revert to old behavior if necessary.