in crates/iceberg/src/expr/visitors/bound_predicate_visitor.rs [30:155]
fn always_true(&mut self) -> Result<Self::T>;
/// Called after an `AlwaysFalse` predicate is visited
fn always_false(&mut self) -> Result<Self::T>;
/// Called after an `And` predicate is visited
fn and(&mut self, lhs: Self::T, rhs: Self::T) -> Result<Self::T>;
/// Called after an `Or` predicate is visited
fn or(&mut self, lhs: Self::T, rhs: Self::T) -> Result<Self::T>;
/// Called after a `Not` predicate is visited
fn not(&mut self, inner: Self::T) -> Result<Self::T>;
/// Called after a predicate with an `IsNull` operator is visited
fn is_null(
&mut self,
reference: &BoundReference,
predicate: &BoundPredicate,
) -> Result<Self::T>;
/// Called after a predicate with a `NotNull` operator is visited
fn not_null(
&mut self,
reference: &BoundReference,
predicate: &BoundPredicate,
) -> Result<Self::T>;
/// Called after a predicate with an `IsNan` operator is visited
fn is_nan(&mut self, reference: &BoundReference, predicate: &BoundPredicate)
-> Result<Self::T>;
/// Called after a predicate with a `NotNan` operator is visited
fn not_nan(
&mut self,
reference: &BoundReference,
predicate: &BoundPredicate,
) -> Result<Self::T>;
/// Called after a predicate with a `LessThan` operator is visited
fn less_than(
&mut self,
reference: &BoundReference,
literal: &Datum,
predicate: &BoundPredicate,
) -> Result<Self::T>;
/// Called after a predicate with a `LessThanOrEq` operator is visited
fn less_than_or_eq(
&mut self,
reference: &BoundReference,
literal: &Datum,
predicate: &BoundPredicate,
) -> Result<Self::T>;
/// Called after a predicate with a `GreaterThan` operator is visited
fn greater_than(
&mut self,
reference: &BoundReference,
literal: &Datum,
predicate: &BoundPredicate,
) -> Result<Self::T>;
/// Called after a predicate with a `GreaterThanOrEq` operator is visited
fn greater_than_or_eq(
&mut self,
reference: &BoundReference,
literal: &Datum,
predicate: &BoundPredicate,
) -> Result<Self::T>;
/// Called after a predicate with an `Eq` operator is visited
fn eq(
&mut self,
reference: &BoundReference,
literal: &Datum,
predicate: &BoundPredicate,
) -> Result<Self::T>;
/// Called after a predicate with a `NotEq` operator is visited
fn not_eq(
&mut self,
reference: &BoundReference,
literal: &Datum,
predicate: &BoundPredicate,
) -> Result<Self::T>;
/// Called after a predicate with a `StartsWith` operator is visited
fn starts_with(
&mut self,
reference: &BoundReference,
literal: &Datum,
predicate: &BoundPredicate,
) -> Result<Self::T>;
/// Called after a predicate with a `NotStartsWith` operator is visited
fn not_starts_with(
&mut self,
reference: &BoundReference,
literal: &Datum,
predicate: &BoundPredicate,
) -> Result<Self::T>;
/// Called after a predicate with an `In` operator is visited
fn r#in(
&mut self,
reference: &BoundReference,
literals: &FnvHashSet<Datum>,
predicate: &BoundPredicate,
) -> Result<Self::T>;
/// Called after a predicate with a `NotIn` operator is visited
fn not_in(
&mut self,
reference: &BoundReference,
literals: &FnvHashSet<Datum>,
predicate: &BoundPredicate,
) -> Result<Self::T>;
}
/// Visits a [`BoundPredicate`] with the provided visitor,
/// in post-order
pub(crate) fn visit<V: BoundPredicateVisitor>(
visitor: &mut V,
predicate: &BoundPredicate,
) -> Result<V::T> {