Skip to main content

DeferredDictionaryPage

Enum DeferredDictionaryPage 

Source
enum DeferredDictionaryPage {
    Header {
        data_start: u64,
        header: Box<PageHeader>,
    },
    Location(PageLocation),
}
Expand description

Location of a dictionary page skipped without decoding.

           skip, and the reader can defer         first data page that
           (record location, zero decompress)     needs the dictionary
  NotSeen ─────────────────────────────▶ Deferred ─────────────────────▶ Decoded
     │                                                                      ▲
     ├── read hits the dictionary page (eager path, unchanged) ─────────────┤
     │                                                                      │
     └── skip, but the reader cannot defer ─────────────────────────────────┘
         (`supports_deferred_dictionary()` is false: read it eagerly,
          because a skipped page this reader cannot hand back is lost)

A chunk skipped end to end stays Deferred: its dictionary is never decompressed, which is the point. Skipping values needs only the RLE index cursor, and skipping whole pages needs nothing at all, so the only consumer of dictionary contents is value decoding. Random re-read is what makes the deferral safe: ChunkReader hands out readers at any offset, and the async path’s in-memory column chunk already holds the page’s bytes.

Variants§

§

Header

Values state: the header was already parsed on the skip path, only the page body was left untouched.

Fields

§data_start: u64
§header: Box<PageHeader>
§

Location(PageLocation)

Pages state: the offset index records the page location; header and body are both still unread.

Auto Trait Implementations§

Blanket Implementations§

§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Ungil for T
where T: Send,