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: github-unsubscr...@arrow.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org