lance_encoding::decoder

Trait LogicalPageDecoder

Source
pub trait LogicalPageDecoder: Debug + Send {
    // Required methods
    fn wait_for_loaded(&mut self, loaded_need: u64) -> BoxFuture<'_, Result<()>>;
    fn rows_loaded(&self) -> u64;
    fn num_rows(&self) -> u64;
    fn rows_drained(&self) -> u64;
    fn drain(&mut self, num_rows: u64) -> Result<NextDecodeTask>;
    fn data_type(&self) -> &DataType;

    // Provided methods
    fn accept_child(&mut self, _child: DecoderReady) -> Result<()> { ... }
    fn rows_unloaded(&self) -> u64 { ... }
    fn rows_left(&self) -> u64 { ... }
}
Expand description

A decoder for a field’s worth of data

The decoder is initially “unloaded” (doesn’t have all its data). The [Self::wait] method should be called to wait for the needed I/O data before attempting to decode any further.

Unlike the other decoder types it is assumed that LogicalPageDecoder is stateful and only Send. This is why we don’t need a rows_to_skip argument in Self::drain

Required Methods§

Source

fn wait_for_loaded(&mut self, loaded_need: u64) -> BoxFuture<'_, Result<()>>

Waits until at least num_rows have been loaded

Source

fn rows_loaded(&self) -> u64

The number of rows loaded so far

Source

fn num_rows(&self) -> u64

The total number of rows in the field

Source

fn rows_drained(&self) -> u64

The number of rows that have been drained so far

Source

fn drain(&mut self, num_rows: u64) -> Result<NextDecodeTask>

Creates a task to decode num_rows of data into an array

Source

fn data_type(&self) -> &DataType

The data type of the decoded data

Provided Methods§

Source

fn accept_child(&mut self, _child: DecoderReady) -> Result<()>

Add a newly scheduled child decoder

The default implementation does not expect children and returns an error.

Source

fn rows_unloaded(&self) -> u64

The number of rows that still need loading

Source

fn rows_left(&self) -> u64

The number of rows that are still available to drain

Implementors§