[release/7.0] Fix to #29572 - Json: predicate on json bool property generates incorrect sql #31264
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.
Port of #29574
Fixes #29572
Description
Search condition visitor wasn't handling json scalar expressions properly - we should convert them into search conditions/values just like we do with regular columns
Customer impact
Queries that perform filtering based on bool value inside JSON generate invalid SQL. There is a workaround, but it's not straightforward for some of the cases. (need to convert bool column to object and then back to bool to trick our query optimizer)
How found
Multiple customer reports on 7.0
Regression
No. JSON support is new functionality in 7.0.
Testing
Added regression tests for affected scenarios.
Risk
Minimal: the bug is result of an oversight and one line/trivial change. We were not performing search condition conversion for JSON scalars, like we do for every other operator. Change only affects JSON scenarios of type bool. Also added quirk to revert to old behavior if necessary.