vortex_sequence/compute/
min_max.rs1use vortex_array::compute::{MinMaxKernel, MinMaxKernelAdapter, MinMaxResult};
5use vortex_array::register_kernel;
6use vortex_dtype::Nullability::NonNullable;
7use vortex_error::VortexResult;
8use vortex_scalar::Scalar;
9
10use crate::SequenceArray;
11use crate::array::SequenceVTable;
12
13impl MinMaxKernel for SequenceVTable {
14 fn min_max(&self, array: &SequenceArray) -> VortexResult<Option<MinMaxResult>> {
15 let base = array.base();
16 let last = array.last();
17 let (min, max) = if base < last {
18 (base, last)
19 } else {
20 (last, base)
21 };
22 Ok(Some(MinMaxResult {
23 min: Scalar::primitive_value(min, array.ptype(), NonNullable),
24 max: Scalar::primitive_value(max, array.ptype(), NonNullable),
25 }))
26 }
27}
28
29register_kernel!(MinMaxKernelAdapter(SequenceVTable).lift());