Use typed comparisons for set algebra on strings and binary #7144
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.
On platforms where
char
is signed, ordering StringData and Mixed containing the same strings gives different results, so we need to use the typed comparisons. This brings us up to 6 instantiations of each operation rather than 2, but it's still a lot less than the 38 we used to have.While looking at the code I also noticed another problem:
assign_intersection()
cleared the set and then inserted the elements from the RHS set, which is a use-after-free if the RHS set isthis
.Fixes #7135.