pub struct RowFilter {
pub column: String,
pub eq: Option<FilterValue>,
pub is_in: Option<Vec<FilterValue>>,
pub ge: Option<FilterValue>,
pub le: Option<FilterValue>,
}Expand description
A backend-neutral row filter on one column — the YAML face of the scan predicate the Iceberg source pushes down.
Backend-neutral on purpose: bifrost’s core carries no engine dependency (the
skade source is an optional feature), so the spec type lives here and is
lowered to skade::ScanFilter only inside the Iceberg source. Exactly ONE of
eq / in / (ge,le) must be set.
filter: { column: country, eq: SE } # equality (partition pruning)
filter: { column: country, in: [SE, NO, DK] } # set membership
filter: { column: year, ge: 2020, le: 2026 } # inclusive rangeFields§
§column: StringThe column the predicate is on.
eq: Option<FilterValue>column == value.
is_in: Option<Vec<FilterValue>>column IN (values…).
ge: Option<FilterValue>Inclusive lower bound (value <= column).
le: Option<FilterValue>Inclusive upper bound (column <= value).
Implementations§
Source§impl RowFilter
impl RowFilter
Sourcepub fn is_in<V: Into<FilterValue>>(
column: impl Into<String>,
values: impl IntoIterator<Item = V>,
) -> Self
pub fn is_in<V: Into<FilterValue>>( column: impl Into<String>, values: impl IntoIterator<Item = V>, ) -> Self
column IN (values…).
Sourcepub fn range(
column: impl Into<String>,
lo: Option<impl Into<FilterValue>>,
hi: Option<impl Into<FilterValue>>,
) -> Self
pub fn range( column: impl Into<String>, lo: Option<impl Into<FilterValue>>, hi: Option<impl Into<FilterValue>>, ) -> Self
Inclusive range lo <= column <= hi; either bound may be None.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for RowFilter
impl<'de> Deserialize<'de> for RowFilter
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl StructuralPartialEq for RowFilter
Auto Trait Implementations§
impl Freeze for RowFilter
impl RefUnwindSafe for RowFilter
impl Send for RowFilter
impl Sync for RowFilter
impl Unpin for RowFilter
impl UnsafeUnpin for RowFilter
impl UnwindSafe for RowFilter
Blanket Implementations§
impl<T> Allocation for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more