pub struct EqualityDeleteFilter { /* private fields */ }Expand description
In-memory equality delete filter built from one or more delete files.
Each entry is column_name → set of string-normalised values to delete.
A data row is deleted if, for every column in the filter, the row’s value
is a member of that column’s set.
Implementations§
Source§impl EqualityDeleteFilter
impl EqualityDeleteFilter
Sourcepub async fn from_files(
store: &Arc<dyn Store>,
files: &[EqualityDeleteFile],
) -> AilakeResult<Self>
pub async fn from_files( store: &Arc<dyn Store>, files: &[EqualityDeleteFile], ) -> AilakeResult<Self>
Build filter from a list of equality delete file references.
For each file, downloads the Avro payload from store and extracts
(column_name, value) pairs. All files are merged into one filter.
pub fn empty() -> Self
pub fn is_empty(&self) -> bool
Sourcepub fn should_delete_row(&self, batch: &RecordBatch, row_idx: usize) -> bool
pub fn should_delete_row(&self, batch: &RecordBatch, row_idx: usize) -> bool
Check whether a single row (by its physical index in batch) matches the delete predicate.
Returns true if the row should be logically deleted.
Iceberg equality delete semantics: a row is deleted only when ALL columns in the
delete predicate match (AND, not OR). Used in the per-row HNSW result loop.
Sourcepub fn apply(&self, batch: RecordBatch) -> AilakeResult<RecordBatch>
pub fn apply(&self, batch: RecordBatch) -> AilakeResult<RecordBatch>
Apply the filter to batch, returning a new batch with matching rows removed.
Iceberg equality delete semantics: a row is removed only when ALL columns in the delete predicate match (AND). Columns absent from the batch are ignored.
Auto Trait Implementations§
impl Freeze for EqualityDeleteFilter
impl RefUnwindSafe for EqualityDeleteFilter
impl Send for EqualityDeleteFilter
impl Sync for EqualityDeleteFilter
impl Unpin for EqualityDeleteFilter
impl UnsafeUnpin for EqualityDeleteFilter
impl UnwindSafe for EqualityDeleteFilter
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> Fruit for T
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>
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>
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