in crates/iceberg/src/expr/visitors/manifest_evaluator.rs [346:374]
fn r#in(
&mut self,
reference: &BoundReference,
literals: &FnvHashSet<Datum>,
_predicate: &BoundPredicate,
) -> crate::Result<bool> {
let field = self.field_summary_for_reference(reference);
if field.lower_bound.is_none() {
return ROWS_CANNOT_MATCH;
}
if literals.len() > IN_PREDICATE_LIMIT {
return ROWS_MIGHT_MATCH;
}
if let Some(lower_bound) = &field.lower_bound {
if literals.iter().all(|datum| lower_bound > datum) {
return ROWS_CANNOT_MATCH;
}
}
if let Some(upper_bound) = &field.upper_bound {
if literals.iter().all(|datum| upper_bound < datum) {
return ROWS_CANNOT_MATCH;
}
}
ROWS_MIGHT_MATCH
}