Handle offset consistently for StructArray (#1750) #2085
Closed
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.
Which issue does this PR close?
Closes #1750
Rationale for this change
The special casing of StructArray is inconsistent with how offsets are handled for all other types. This makes an already very confusing parameter, even more confusing.
What changes are included in this PR?
Removes the special-casing of StructArray in ArrayData::slice, instead handling it within the Array implementation as is done for all other array types. Longer term we may want to revisit the offset field, #1799, but until then we should be consistent.
Are there any user-facing changes?
Sort of, whilst extremely unlikely any code is actually doing this, it was possible to manually construct an ArrayData for a StructArray with a non-zero offset. This previously would not behave correctly (as it wasn't entirely clear what the correct semantics even where).