[SPARK-46632][SQL] EquivalentExpressions addExprTree should allow all type of expressions #45894
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.
What changes were proposed in this pull request?
When we try to add some expressions to equivalent expressions it fail
The main problem is when updateExprTree is used with useCount = 1 it iterates through the children of an expression in a certain order. When in updateExprInMap an equivalent (but not equal) expression is found, it does not iterate over its children. Therefore to be able to perform the inverse operation (useCount = -1) it is necessary to traverse the children in inverse order how they were added because the children of two equivalent expressions are not necessarily equal, as the example that we have
(y + 1) + 1
is equivalent to(1 + 1) + y
but(y + 1)
is not equal to(1 + 1)
.Why are the changes needed?
To fix an issue with some type of expressions
Does this PR introduce any user-facing change?
No
How was this patch tested?
Unit testing
Was this patch authored or co-authored using generative AI tooling?
No