risingwave_common/array/
interval_array.rs1use super::{PrimitiveArray, PrimitiveArrayBuilder};
16use crate::types::Interval;
17
18pub type IntervalArray = PrimitiveArray<Interval>;
19pub type IntervalArrayBuilder = PrimitiveArrayBuilder<Interval>;
20
21#[cfg(test)]
22mod tests {
23 use super::IntervalArray;
24 use crate::array::interval_array::{Interval, IntervalArrayBuilder};
25 use crate::array::{Array, ArrayBuilder};
26 use crate::types::test_utils::IntervalTestExt;
27
28 #[test]
29 fn test_interval_array() {
30 let cardinality = 5;
31 let mut array_builder = IntervalArrayBuilder::new(cardinality);
32 for _ in 0..cardinality {
33 let v = Interval::from_ymd(1, 0, 0);
34 array_builder.append(Some(v));
35 }
36 let ret_arr = array_builder.finish();
37 for v in ret_arr.iter().flatten() {
38 assert_eq!(v.months(), 12);
39 assert_eq!(v.days(), 0);
40 }
41 let ret_arr = IntervalArray::from_iter([Some(Interval::from_ymd(1, 0, 0)), None]);
42 let v = ret_arr.value_at(0).unwrap();
43 assert_eq!(v.months(), 12);
44 assert_eq!(v.days(), 0);
45 let v = ret_arr.value_at(1);
46 assert_eq!(v, None);
47 let v = unsafe { ret_arr.value_at_unchecked(0).unwrap() };
48 assert_eq!(v.months(), 12);
49 assert_eq!(v.days(), 0);
50 }
51}