polars_expr::chunked_idx_table

Trait ChunkedIdxTable

Source
pub trait ChunkedIdxTable:
    Any
    + Send
    + Sync {
    // Required methods
    fn new_empty(&self) -> Box<dyn ChunkedIdxTable>;
    fn reserve(&mut self, additional: usize);
    fn num_keys(&self) -> IdxSize;
    fn insert_key_chunk(&mut self, keys: HashKeys, track_unmatchable: bool);
    fn probe(
        &self,
        hash_keys: &HashKeys,
        table_match: &mut Vec<ChunkId<32>>,
        probe_match: &mut Vec<IdxSize>,
        mark_matches: bool,
        emit_unmatched: bool,
        limit: IdxSize,
    ) -> IdxSize;
    unsafe fn probe_subset(
        &self,
        hash_keys: &HashKeys,
        subset: &[IdxSize],
        table_match: &mut Vec<ChunkId<32>>,
        probe_match: &mut Vec<IdxSize>,
        mark_matches: bool,
        emit_unmatched: bool,
        limit: IdxSize,
    ) -> IdxSize;
    fn unmarked_keys(
        &self,
        out: &mut Vec<ChunkId<32>>,
        offset: IdxSize,
        limit: IdxSize,
    ) -> IdxSize;
}

Required Methods§

Source

fn new_empty(&self) -> Box<dyn ChunkedIdxTable>

Creates a new empty ChunkedIdxTable similar to this one.

Source

fn reserve(&mut self, additional: usize)

Reserves space for the given number additional keys.

Source

fn num_keys(&self) -> IdxSize

Returns the number of unique keys in this ChunkedIdxTable.

Source

fn insert_key_chunk(&mut self, keys: HashKeys, track_unmatchable: bool)

Inserts the given key chunk into this ChunkedIdxTable.

Source

fn probe( &self, hash_keys: &HashKeys, table_match: &mut Vec<ChunkId<32>>, probe_match: &mut Vec<IdxSize>, mark_matches: bool, emit_unmatched: bool, limit: IdxSize, ) -> IdxSize

Probe the table, updating table_match and probe_match with (ChunkId, IdxSize) pairs for each match. Will stop processing new keys once limit matches have been generated, returning the number of keys processed.

If mark_matches is true, matches are marked in the table as such.

If emit_unmatched is true, for keys that do not have a match we emit a match with ChunkId::null() on the table match.

Source

unsafe fn probe_subset( &self, hash_keys: &HashKeys, subset: &[IdxSize], table_match: &mut Vec<ChunkId<32>>, probe_match: &mut Vec<IdxSize>, mark_matches: bool, emit_unmatched: bool, limit: IdxSize, ) -> IdxSize

The same as probe, except it will only apply to the specified subset of keys.

§Safety

The provided subset indices must be in-bounds.

Source

fn unmarked_keys( &self, out: &mut Vec<ChunkId<32>>, offset: IdxSize, limit: IdxSize, ) -> IdxSize

Get the ChunkIds for each key which was never marked during probing.

Implementors§