vortex_sequence/compute/
min_max.rs

1use vortex_array::compute::{MinMaxKernel, MinMaxKernelAdapter, MinMaxResult};
2use vortex_array::register_kernel;
3use vortex_error::VortexResult;
4use vortex_scalar::Scalar;
5
6use crate::SequenceArray;
7use crate::array::SequenceVTable;
8
9impl MinMaxKernel for SequenceVTable {
10    fn min_max(&self, array: &SequenceArray) -> VortexResult<Option<MinMaxResult>> {
11        let base = array.base();
12        let last = array.last();
13        let (min, max) = if base < last {
14            (base, last)
15        } else {
16            (last, base)
17        };
18        Ok(Some(MinMaxResult {
19            min: Scalar::new(array.dtype().clone(), min.into()),
20            max: Scalar::new(array.dtype().clone(), max.into()),
21        }))
22    }
23}
24
25register_kernel!(MinMaxKernelAdapter(SequenceVTable).lift());