|
1 | 1 | // SPDX-License-Identifier: Apache-2.0 |
2 | 2 | // SPDX-FileCopyrightText: Copyright the Vortex contributors |
3 | 3 |
|
4 | | -use std::fmt::Debug; |
5 | | - |
6 | 4 | use vortex_array::accessor::ArrayAccessor; |
7 | | -use vortex_array::arrays::BoolArray; |
| 5 | +use vortex_array::arrays::{BoolArray, NativeValue}; |
8 | 6 | use vortex_array::compute::{Operator, scalar_cmp}; |
9 | 7 | use vortex_array::validity::Validity; |
10 | 8 | use vortex_array::{Array, ArrayRef, IntoArray, ToCanonical}; |
11 | 9 | use vortex_buffer::BitBuffer; |
12 | | -use vortex_dtype::{ |
13 | | - DType, NativePType, Nullability, match_each_decimal_value_type, match_each_native_ptype, |
14 | | -}; |
| 10 | +use vortex_dtype::{DType, Nullability, match_each_decimal_value_type, match_each_native_ptype}; |
15 | 11 | use vortex_error::{VortexExpect, VortexResult, vortex_err}; |
16 | 12 | use vortex_scalar::Scalar; |
17 | 13 |
|
@@ -55,14 +51,14 @@ pub fn compare_canonical_array( |
55 | 51 | let pval = primitive |
56 | 52 | .typed_value::<P>() |
57 | 53 | .vortex_expect("nulls handled before"); |
58 | | - Ok(compare_native_ptype( |
| 54 | + Ok(compare_to( |
59 | 55 | primitive_array |
60 | 56 | .as_slice::<P>() |
61 | 57 | .iter() |
62 | 58 | .copied() |
63 | 59 | .zip(array.validity_mask().to_bit_buffer().iter()) |
64 | | - .map(|(b, v)| v.then_some(b)), |
65 | | - pval, |
| 60 | + .map(|(b, v)| v.then_some(NativeValue(b))), |
| 61 | + NativeValue(pval), |
66 | 62 | operator, |
67 | 63 | result_nullability, |
68 | 64 | )) |
@@ -157,30 +153,3 @@ fn compare_to<T: PartialOrd>( |
157 | 153 | BoolArray::from_iter(values.map(|val| val.map(eval_fn))).into_array() |
158 | 154 | } |
159 | 155 | } |
160 | | - |
161 | | -fn compare_native_ptype<T: NativePType>( |
162 | | - values: impl Iterator<Item = Option<T>>, |
163 | | - cmp_value: T, |
164 | | - operator: Operator, |
165 | | - nullability: Nullability, |
166 | | -) -> ArrayRef { |
167 | | - let eval_fn = |v: T| match operator { |
168 | | - Operator::Eq => v.is_eq(cmp_value), |
169 | | - Operator::NotEq => !v.is_eq(cmp_value), |
170 | | - Operator::Gt => v.is_gt(cmp_value), |
171 | | - Operator::Gte => v.is_ge(cmp_value), |
172 | | - Operator::Lt => v.is_lt(cmp_value), |
173 | | - Operator::Lte => v.is_le(cmp_value), |
174 | | - }; |
175 | | - |
176 | | - if !nullability.is_nullable() { |
177 | | - BoolArray::from_iter( |
178 | | - values |
179 | | - .map(|val| val.vortex_expect("non nullable")) |
180 | | - .map(eval_fn), |
181 | | - ) |
182 | | - .into_array() |
183 | | - } else { |
184 | | - BoolArray::from_iter(values.map(|val| val.map(eval_fn))).into_array() |
185 | | - } |
186 | | -} |
0 commit comments