pub struct PageVersionIndexSegment {
pub start_seq: u64,
pub end_seq: u64,
pub entries: Vec<(PageNumber, VersionPointer)>,
pub bloom: BloomFilter,
}Expand description
Maps PageNumber -> VersionPointer for a specific commit range (§3.6.3).
Includes a bloom filter for fast “not present” checks. All index segments are ECS objects (content-addressed, repairable via RaptorQ).
Fields§
§start_seq: u64Inclusive start of the commit range covered.
end_seq: u64Inclusive end of the commit range covered.
entries: Vec<(PageNumber, VersionPointer)>Sorted entries mapping page numbers to version pointers.
Sorted by (page_number, commit_seq) ascending. Multiple entries per
page are allowed (a page may be updated multiple times within the
segment’s commit range).
bloom: BloomFilterBloom filter for fast “not present” checks.
Implementations§
Source§impl PageVersionIndexSegment
impl PageVersionIndexSegment
Sourcepub fn new(
start_seq: u64,
end_seq: u64,
entries: Vec<(PageNumber, VersionPointer)>,
) -> Self
pub fn new( start_seq: u64, end_seq: u64, entries: Vec<(PageNumber, VersionPointer)>, ) -> Self
Create a new segment from entries. Sorts entries by (page, commit_seq) and
builds the bloom filter automatically.
Sourcepub fn lookup(
&self,
page: PageNumber,
snapshot_high: u64,
) -> Option<&VersionPointer>
pub fn lookup( &self, page: PageNumber, snapshot_high: u64, ) -> Option<&VersionPointer>
Look up the newest version pointer for page with
commit_seq <= snapshot_high.
Returns None if the page has no entry in this segment or if
no version is visible under the given snapshot.
Trait Implementations§
Source§impl Clone for PageVersionIndexSegment
impl Clone for PageVersionIndexSegment
Source§fn clone(&self) -> PageVersionIndexSegment
fn clone(&self) -> PageVersionIndexSegment
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more