WillAyd commented on code in PR #45272:
URL: https://github.com/apache/arrow/pull/45272#discussion_r2222787497
##########
cpp/src/arrow/compute/kernels/scalar_compare.cc:
##########
@@ -54,6 +55,39 @@ struct NotEqual {
}
};
+struct ListEqual {
+ template <typename T, typename Arg0, typename Arg1>
+ static T Call(KernelContext*, const Arg0& left, const Arg1& right, Status*) {
+ static_assert(std::is_same<T, bool>::value && std::is_same<Arg0,
Arg1>::value, "");
+
+ if (left.length != right.length) {
+ return false;
+ } else {
+ RangeDataEqualsImpl range_comparer{
+ EqualOptions::Defaults(), false, left, right, 0, 0, 1,
Review Comment:
I'm starting to question if the ArrayIterator approach will really work
here. The issue with this code in its current state is that it holds an
invariant the its ArraySpan argument being provided is sliced so that the
offset is 0; I think that might be hard to read and worry about how
generalizable it will be.
There's also an issue with the child array properly signaling its validity
bitmap to `RangeDataEqualsImpl::Compare`, which is configured to read the
bitmap of the parent.
Researching a bit more how the other nested types are handled...stay tuned
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]