Fix arrays_overlap, array_intersect, and array_except when one input is a constant with dictionary-encoded elements #2954
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.
Summary:
arrays_overlap, array_intersect, and array_except have a special handling of literal
input in
validateConstantVectorAndGenerateSet()
, but this function assumes theelement vector of the literal array vector is flat. Velox fuzzer found a corner case
where one of their inputs is the result of another function on a literal and this result
has dictionary-encoded elements, e.g.,
arrays_overlap(c0, array_distinct(ARRAY [1, 2, 3, 3]))
(#2793). arrays_overlap, array_intersect, and array_except throws before this fix.
This diff adds the handling of dictionary-encoded element vector.
Reviewed By: mbasmanova
Differential Revision:
D40663617
LaMa Project: L1134559