in crates/iceberg/src/expr/visitors/row_group_metrics_evaluator.rs [154:188]
fn visit_inequality(
&mut self,
reference: &BoundReference,
datum: &Datum,
cmp_fn: fn(&Datum, &Datum) -> bool,
use_lower_bound: bool,
) -> Result<bool> {
let field_id = reference.field().id;
if self.contains_nulls_only(field_id) {
return ROW_GROUP_CANT_MATCH;
}
if datum.is_nan() {
// NaN indicates unreliable bounds.
// See the InclusiveMetricsEvaluator docs for more.
return ROW_GROUP_MIGHT_MATCH;
}
let bound = if use_lower_bound {
self.min_value(field_id)
} else {
self.max_value(field_id)
}?;
if let Some(bound) = bound {
if cmp_fn(&bound, datum) {
return ROW_GROUP_MIGHT_MATCH;
}
return ROW_GROUP_CANT_MATCH;
}
ROW_GROUP_MIGHT_MATCH
}