|
3 | 3 |
|
4 | 4 | use core::fmt; |
5 | 5 | use std::any::Any; |
| 6 | +use std::cmp::Ordering; |
6 | 7 | use std::fmt::Display; |
7 | 8 | use std::fmt::Formatter; |
8 | 9 | use std::sync::LazyLock; |
@@ -331,20 +332,19 @@ pub(crate) fn compare_nested_arrow_arrays( |
331 | 332 | rhs: &dyn arrow_array::Array, |
332 | 333 | operator: Operator, |
333 | 334 | ) -> VortexResult<BooleanArray> { |
334 | | - let cmp = make_comparator(lhs, rhs, SortOptions::default())?; |
| 335 | + let compare_arrays_at = make_comparator(lhs, rhs, SortOptions::default())?; |
| 336 | + |
| 337 | + let cmp_fn = match operator { |
| 338 | + Operator::Eq => Ordering::is_eq, |
| 339 | + Operator::NotEq => Ordering::is_ne, |
| 340 | + Operator::Gt => Ordering::is_gt, |
| 341 | + Operator::Gte => Ordering::is_ge, |
| 342 | + Operator::Lt => Ordering::is_lt, |
| 343 | + Operator::Lte => Ordering::is_le, |
| 344 | + }; |
335 | 345 |
|
336 | 346 | let values = (0..lhs.len()) |
337 | | - .map(|i| { |
338 | | - let cmp_result = cmp(i, i); |
339 | | - match operator { |
340 | | - Operator::Eq => cmp_result.is_eq(), |
341 | | - Operator::NotEq => cmp_result.is_ne(), |
342 | | - Operator::Gt => cmp_result.is_gt(), |
343 | | - Operator::Gte => cmp_result.is_ge(), |
344 | | - Operator::Lt => cmp_result.is_lt(), |
345 | | - Operator::Lte => cmp_result.is_le(), |
346 | | - } |
347 | | - }) |
| 347 | + .map(|i| cmp_fn(compare_arrays_at(i, i))) |
348 | 348 | .collect(); |
349 | 349 | let nulls = NullBuffer::union(lhs.nulls(), rhs.nulls()); |
350 | 350 |
|
|
0 commit comments