pub enum ColumnarWalRecord {
InsertRow {
collection: String,
row_data: Vec<u8>,
},
DeleteRows {
collection: String,
segment_id: u32,
row_indices: Vec<u32>,
},
CompactionCommit {
collection: String,
old_segment_ids: Vec<u32>,
new_segment_ids: Vec<u32>,
},
MemtableFlushed {
collection: String,
segment_id: u32,
row_count: u64,
},
}Expand description
A WAL record for a columnar collection operation.
Variants§
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 · 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> 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.