sql: fix BETWEEN SYMMETRIC
normalization to use matching typed lefts
#151951
+15
−4
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.
We normalize symmetric
RangeCond
expressions (<left> BETWEEN SYMMETRIC <from> AND <to>
) by expanding them into 2 pairs ofComparisonExpr
, covering both orderings of the BETWEEN bounds. When the type-checks for the left/from and left/to comparisons chose different coercions, the symmetric half could pairleftFrom
withto
(andleftTo
withfrom
) during normalization. This resulted in mixed-type comparisons on type-checked expressions and caused panics in some paths (e.g. AOST normalization).This change ensures that the type-checked pairings are kept aligned when constructing
ComparisonExpr
in the symmetric case.Fixes: #133395
Release note (bug fix): Previously, executing certain statements with
BETWEEN SYMMETRIC
expressions could panic if used with values of different types, such as... b'bytes' BETWEEN SYMMETRIC 'a' AND 'c'
, which is now fixed.