(
lhs_values: &[u8],
rhs_values: &[u8],
lhs_offsets: &[T],
rhs_offsets: &[T],
lhs_pos: usize,
rhs_pos: usize,
len: usize,
)
| 22 | use num_integer::Integer; |
| 23 | |
| 24 | fn offset_value_equal<T: ArrowNativeType + Integer>( |
| 25 | lhs_values: &[u8], |
| 26 | rhs_values: &[u8], |
| 27 | lhs_offsets: &[T], |
| 28 | rhs_offsets: &[T], |
| 29 | lhs_pos: usize, |
| 30 | rhs_pos: usize, |
| 31 | len: usize, |
| 32 | ) -> bool { |
| 33 | let lhs_start = lhs_offsets[lhs_pos].as_usize(); |
| 34 | let rhs_start = rhs_offsets[rhs_pos].as_usize(); |
| 35 | let lhs_len = (lhs_offsets[lhs_pos + len] - lhs_offsets[lhs_pos]) |
| 36 | .to_usize() |
| 37 | .unwrap(); |
| 38 | let rhs_len = (rhs_offsets[rhs_pos + len] - rhs_offsets[rhs_pos]) |
| 39 | .to_usize() |
| 40 | .unwrap(); |
| 41 | |
| 42 | if lhs_len == 0 && rhs_len == 0 { |
| 43 | return true; |
| 44 | } |
| 45 | |
| 46 | lhs_len == rhs_len && equal_len(lhs_values, rhs_values, lhs_start, rhs_start, lhs_len) |
| 47 | } |
| 48 | |
| 49 | pub(super) fn variable_sized_equal<T: ArrowNativeType + Integer>( |
| 50 | lhs: &ArrayData, |
no test coverage detected