You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
pyarrow.compute.equal fails for pa.binary_view() arrays because C++ compute has no registered comparison kernel for (binary_view, binary_view).
This fixes that missing kernel path and also enables the same comparisons for utf8_view.
What changes are included in this PR?
This adds comparison kernel support for binary_view and utf8_view.
The following functions now work for same-type inputs:
equal
not_equal
greater
greater_equal
less
less_equal
Are these changes tested?
Added C++ tests covering:
inline and out-of-line values
nulls
sliced arrays
array-array comparisons
array-scalar and scalar-array comparisons
all six comparison functions
Added Python regression tests for pa.binary_view() and pa.string_view().
Verified the same cases fail before this patch at a0d2885b101acb439f7f79ec2237028974e74e64 with ArrowNotImplementedError: no kernel matching input types.
Are there any user-facing changes?
pyarrow.compute comparison functions now work for pa.binary_view() and pa.string_view() arrays where they previously failed with a missing kernel error.
AI Usage
Tests were generated by LLM agents along with part or PR summary
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds missing comparison kernel registrations for Arrow C++ compute so that binary_view and utf8_view arrays can be compared (and thus pyarrow.compute.* comparison functions work for pa.binary_view() / pa.string_view() inputs).
Changes:
Register (binary_view, binary_view) and (utf8_view, utf8_view) comparison kernels in C++ compute.
Extend internal kernel codegen iteration utilities to support binary-view-like arrays.
Add C++ and Python tests covering comparisons for view types (including nulls and slicing).
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
File
Description
python/pyarrow/tests/test_compute.py
Adds Python regression tests ensuring view-type arrays work with the 6 comparison functions.
cpp/src/arrow/compute/kernels/scalar_compare.cc
Registers comparison kernels for binary_view and utf8_view.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
Rationale for this change
pyarrow.compute.equalfails forpa.binary_view()arrays because C++ compute has no registered comparison kernel for(binary_view, binary_view).This fixes that missing kernel path and also enables the same comparisons for
utf8_view.What changes are included in this PR?
This adds comparison kernel support for
binary_viewandutf8_view.The following functions now work for same-type inputs:
equalnot_equalgreatergreater_equallessless_equalAre these changes tested?
Added C++ tests covering:
Added Python regression tests for
pa.binary_view()andpa.string_view().Verified the same cases fail before this patch at
a0d2885b101acb439f7f79ec2237028974e74e64withArrowNotImplementedError: no kernel matching input types.Are there any user-facing changes?
pyarrow.computecomparison functions now work forpa.binary_view()andpa.string_view()arrays where they previously failed with a missing kernel error.AI Usage
Tests were generated by LLM agents along with part or PR summary
Addresses: GH-46856
Partially addresses: GH-44336