vortex_array/expr/functions/
execution.rs1use vortex_dtype::DType;
8use vortex_vector::Datum;
9use vortex_vector::VectorOps;
10
11pub struct ExecutionArgs {
13 row_count: usize,
15 return_dtype: DType,
17 input_dtypes: Vec<DType>,
19 input_datums: Vec<Datum>,
21}
22
23impl ExecutionArgs {
24 pub fn new(
25 row_count: usize,
26 return_dtype: DType,
27 input_types: Vec<DType>,
28 input_datums: Vec<impl Into<Datum>>,
29 ) -> Self {
30 let input_datums: Vec<Datum> = input_datums.into_iter().map(|d| d.into()).collect();
31 assert!(
32 input_datums
33 .iter()
34 .all(|d| d.as_vector().is_none_or(|v| v.len() == row_count)),
35 "All input vectors must have the same length as row_count"
36 );
37 Self {
38 row_count,
39 return_dtype,
40 input_dtypes: input_types,
41 input_datums,
42 }
43 }
44
45 pub fn row_count(&self) -> usize {
46 self.row_count
47 }
48
49 pub fn return_dtype(&self) -> &DType {
50 &self.return_dtype
51 }
52
53 pub fn input_type(&self, idx: usize) -> &DType {
54 &self.input_dtypes[idx]
55 }
56
57 pub fn input_datums(&self, idx: usize) -> &Datum {
58 &self.input_datums[idx]
59 }
60}