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