fn visit_inequality()

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
    }