#[non_exhaustive]pub enum ColumnarWalRecord {
InsertRow {
collection: String,
row_data: Vec<u8>,
},
DeleteRows {
collection: String,
segment_id: u64,
row_indices: Vec<u32>,
},
CompactionCommit {
collection: String,
old_segment_ids: Vec<u64>,
new_segment_ids: Vec<u64>,
},
MemtableFlushed {
collection: String,
segment_id: u64,
row_count: u64,
},
}Expand description
A WAL record for a columnar collection operation.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
InsertRow
A row was inserted into the memtable.
Contains the collection name and the row data as packed binary (the columnar wire format, not MessagePack). On replay, the row is re-inserted into the memtable.
Fields
DeleteRows
Rows were marked as deleted in a segment’s delete bitmap.
On replay, these row indices are re-applied to the segment’s delete bitmap.
CompactionCommit
A compaction was committed: old segments replaced with new ones.
This is the atomic commit point of the 3-phase compaction protocol. On replay:
- If new segments exist on disk: complete the metadata swap.
- If new segments don’t exist: the compaction was interrupted before writing; discard and treat old segments as authoritative.
MemtableFlushed
The memtable was flushed to a new segment.
On replay, if the segment file exists, update metadata to include it. If it doesn’t exist, the flush was interrupted; rows are already in the memtable via InsertRow records.
Implementations§
Source§impl ColumnarWalRecord
impl ColumnarWalRecord
Sourcepub fn collection(&self) -> &str
pub fn collection(&self) -> &str
Collection name this record belongs to.
Sourcepub fn from_bytes(data: &[u8]) -> Result<Self, ColumnarError>
pub fn from_bytes(data: &[u8]) -> Result<Self, ColumnarError>
Deserialize a record from bytes.
Trait Implementations§
Source§impl Clone for ColumnarWalRecord
impl Clone for ColumnarWalRecord
Source§fn clone(&self) -> ColumnarWalRecord
fn clone(&self) -> ColumnarWalRecord
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ColumnarWalRecord
impl Debug for ColumnarWalRecord
Source§impl<'de> Deserialize<'de> for ColumnarWalRecord
impl<'de> Deserialize<'de> for ColumnarWalRecord
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<'__msgpack_de> FromMessagePack<'__msgpack_de> for ColumnarWalRecord
impl<'__msgpack_de> FromMessagePack<'__msgpack_de> for ColumnarWalRecord
Source§impl Serialize for ColumnarWalRecord
impl Serialize for ColumnarWalRecord
Auto Trait Implementations§
impl Freeze for ColumnarWalRecord
impl RefUnwindSafe for ColumnarWalRecord
impl Send for ColumnarWalRecord
impl Sync for ColumnarWalRecord
impl Unpin for ColumnarWalRecord
impl UnsafeUnpin for ColumnarWalRecord
impl UnwindSafe for ColumnarWalRecord
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.