vortex_fastlanes/bitpacking/compute/
between.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use vortex_array::Array;
5use vortex_array::ArrayRef;
6use vortex_array::IntoArray;
7use vortex_array::compute::BetweenKernel;
8use vortex_array::compute::BetweenKernelAdapter;
9use vortex_array::compute::BetweenOptions;
10use vortex_array::compute::between;
11use vortex_array::register_kernel;
12use vortex_error::VortexResult;
13
14use crate::BitPackedArray;
15use crate::BitPackedVTable;
16
17impl BetweenKernel for BitPackedVTable {
18    fn between(
19        &self,
20        array: &BitPackedArray,
21        lower: &dyn Array,
22        upper: &dyn Array,
23        options: &BetweenOptions,
24    ) -> VortexResult<Option<ArrayRef>> {
25        if !lower.is_constant() || !upper.is_constant() {
26            return Ok(None);
27        };
28
29        between(
30            &array.clone().to_canonical().into_array(),
31            lower,
32            upper,
33            options,
34        )
35        .map(Some)
36    }
37}
38
39register_kernel!(BetweenKernelAdapter(BitPackedVTable).lift());