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.
Location(PageLocation)
Pages state: the offset index records the page location; header and
body are both still unread.
Auto Trait Implementations§
impl Freeze for DeferredDictionaryPage
impl RefUnwindSafe for DeferredDictionaryPage
impl Send for DeferredDictionaryPage
impl Sync for DeferredDictionaryPage
impl Unpin for DeferredDictionaryPage
impl UnsafeUnpin for DeferredDictionaryPage
impl UnwindSafe for DeferredDictionaryPage
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