MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / eval_datums

Method eval_datums

src/expr/src/relation/func.rs:2112–2225  ·  view source on GitHub ↗

Evaluates the aggregate over a flat iterator of datums, ignoring multiplicity.

(&self, datums: I, temp_storage: &'a RowArena)

Source from the content-addressed store, hash-verified

2110
2111 /// Evaluates the aggregate over a flat iterator of datums, ignoring multiplicity.
2112 fn eval_datums<'a, I>(&self, datums: I, temp_storage: &'a RowArena) -> Datum<'a>
2113 where
2114 I: IntoIterator<Item = Datum<'a>>,
2115 {
2116 match self {
2117 AggregateFunc::MaxNumeric => {
2118 max_datum::<'a, I, OrderedDecimal<numeric::Numeric>>(datums)
2119 }
2120 AggregateFunc::MaxInt16 => max_datum::<'a, I, i16>(datums),
2121 AggregateFunc::MaxInt32 => max_datum::<'a, I, i32>(datums),
2122 AggregateFunc::MaxInt64 => max_datum::<'a, I, i64>(datums),
2123 AggregateFunc::MaxUInt16 => max_datum::<'a, I, u16>(datums),
2124 AggregateFunc::MaxUInt32 => max_datum::<'a, I, u32>(datums),
2125 AggregateFunc::MaxUInt64 => max_datum::<'a, I, u64>(datums),
2126 AggregateFunc::MaxMzTimestamp => max_datum::<'a, I, mz_repr::Timestamp>(datums),
2127 AggregateFunc::MaxFloat32 => max_datum::<'a, I, OrderedFloat<f32>>(datums),
2128 AggregateFunc::MaxFloat64 => max_datum::<'a, I, OrderedFloat<f64>>(datums),
2129 AggregateFunc::MaxBool => max_datum::<'a, I, bool>(datums),
2130 AggregateFunc::MaxString => max_string(datums),
2131 AggregateFunc::MaxDate => max_datum::<'a, I, Date>(datums),
2132 AggregateFunc::MaxTimestamp => {
2133 max_datum::<'a, I, CheckedTimestamp<NaiveDateTime>>(datums)
2134 }
2135 AggregateFunc::MaxTimestampTz => {
2136 max_datum::<'a, I, CheckedTimestamp<DateTime<Utc>>>(datums)
2137 }
2138 AggregateFunc::MaxInterval => max_datum::<'a, I, Interval>(datums),
2139 AggregateFunc::MaxTime => max_datum::<'a, I, NaiveTime>(datums),
2140 AggregateFunc::MinNumeric => {
2141 min_datum::<'a, I, OrderedDecimal<numeric::Numeric>>(datums)
2142 }
2143 AggregateFunc::MinInt16 => min_datum::<'a, I, i16>(datums),
2144 AggregateFunc::MinInt32 => min_datum::<'a, I, i32>(datums),
2145 AggregateFunc::MinInt64 => min_datum::<'a, I, i64>(datums),
2146 AggregateFunc::MinUInt16 => min_datum::<'a, I, u16>(datums),
2147 AggregateFunc::MinUInt32 => min_datum::<'a, I, u32>(datums),
2148 AggregateFunc::MinUInt64 => min_datum::<'a, I, u64>(datums),
2149 AggregateFunc::MinMzTimestamp => min_datum::<'a, I, mz_repr::Timestamp>(datums),
2150 AggregateFunc::MinFloat32 => min_datum::<'a, I, OrderedFloat<f32>>(datums),
2151 AggregateFunc::MinFloat64 => min_datum::<'a, I, OrderedFloat<f64>>(datums),
2152 AggregateFunc::MinBool => min_datum::<'a, I, bool>(datums),
2153 AggregateFunc::MinString => min_string(datums),
2154 AggregateFunc::MinDate => min_datum::<'a, I, Date>(datums),
2155 AggregateFunc::MinTimestamp => {
2156 min_datum::<'a, I, CheckedTimestamp<NaiveDateTime>>(datums)
2157 }
2158 AggregateFunc::MinTimestampTz => {
2159 min_datum::<'a, I, CheckedTimestamp<DateTime<Utc>>>(datums)
2160 }
2161 AggregateFunc::MinInterval => min_datum::<'a, I, Interval>(datums),
2162 AggregateFunc::MinTime => min_datum::<'a, I, NaiveTime>(datums),
2163 AggregateFunc::SumInt16 => sum_datum::<'a, I, i16, i64>(datums),
2164 AggregateFunc::SumInt32 => sum_datum::<'a, I, i32, i64>(datums),
2165 AggregateFunc::SumInt64 => sum_datum::<'a, I, i64, i128>(datums),
2166 AggregateFunc::SumUInt16 => sum_datum::<'a, I, u16, u64>(datums),
2167 AggregateFunc::SumUInt32 => sum_datum::<'a, I, u32, u64>(datums),
2168 AggregateFunc::SumUInt64 => sum_datum::<'a, I, u64, u128>(datums),
2169 AggregateFunc::SumFloat32 => sum_datum::<'a, I, f32, f32>(datums),

Callers 1

evalMethod · 0.80

Calls 15

max_stringFunction · 0.85
min_stringFunction · 0.85
sum_numericFunction · 0.85
anyFunction · 0.85
allFunction · 0.85
jsonb_aggFunction · 0.85
dict_aggFunction · 0.85
array_concatFunction · 0.85
list_concatFunction · 0.85
string_aggFunction · 0.85
row_numberFunction · 0.85
rankFunction · 0.85

Tested by

no test coverage detected