pub struct Page {
pub inner: UnsafeCell<PageInner>,
}Fields§
§inner: UnsafeCell<PageInner>Implementations§
Source§impl Page
impl Page
pub fn new(id: i64) -> Self
pub fn get(&self) -> &mut PageInner
Sourcepub fn get_contents(&self) -> &mut PageInner
pub fn get_contents(&self) -> &mut PageInner
Returns a mutable reference to PageInner for accessing page contents. Panics if the page buffer is not loaded.
pub fn is_locked(&self) -> bool
pub fn set_locked(&self)
pub fn clear_locked(&self)
pub fn is_dirty(&self) -> bool
Sourcepub fn set_dirty(&self)
pub fn set_dirty(&self)
almost never should be called explicitly - instead Pager::add_dirty method must be used
Sourcepub fn clear_dirty(&self)
pub fn clear_dirty(&self)
caller must ensure that Pager::dirty_pages will be updated accordingly
Sourcepub fn clear_dirty_keep_wal_tag(&self)
pub fn clear_dirty_keep_wal_tag(&self)
Clear the dirty flag without touching wal_tag. Used when a WAL frame has been durably written and the tag already encodes it.
Sourcepub fn is_spilled(&self) -> bool
pub fn is_spilled(&self) -> bool
Returns true if the page has been spilled to WAL and is safe to evict even while dirty.
Sourcepub fn set_spilled(&self)
pub fn set_spilled(&self)
Mark the page as spilled to WAL. Spilled pages remain dirty but may be evicted from cache.
Sourcepub fn clear_spilled(&self)
pub fn clear_spilled(&self)
Clear the spilled flag. This is also done implicitly on set_dirty().
pub fn is_loaded(&self) -> bool
pub fn set_loaded(&self)
pub fn clear_loaded(&self)
pub fn is_index(&self) -> Result<bool>
Sourcepub fn pin(&self)
pub fn pin(&self)
Increment the pin count by 1. A pin count >0 means the page is pinned and not eligible for eviction from the page cache.
Sourcepub fn unpin(&self)
pub fn unpin(&self)
Decrement the pin count by 1. If the count reaches 0, the page is no longer pinned and is eligible for eviction from the page cache.
Sourcepub fn try_unpin(&self) -> bool
pub fn try_unpin(&self) -> bool
Try to decrement the pin count by 1, but do nothing if it was already 0. Returns true if the pin count was decremented.
Sourcepub fn is_pinned(&self) -> bool
pub fn is_pinned(&self) -> bool
Returns true if the page is pinned and thus not eligible for eviction from the page cache.
Sourcepub fn set_wal_tag(&self, frame: u64, epoch: u32)
pub fn set_wal_tag(&self, frame: u64, epoch: u32)
Set the WAL tag from a (frame, epoch) pair. If inputs are invalid, stores TAG_UNSET, which will prevent the cached page from being used during checkpoint.
Sourcepub fn wal_tag_pair(&self) -> (u64, u32)
pub fn wal_tag_pair(&self) -> (u64, u32)
Load the (frame, seq) pair from the packed tag.
pub fn clear_wal_tag(&self)
Sourcepub fn has_wal_tag(&self) -> bool
pub fn has_wal_tag(&self) -> bool
Returns true if the page has a valid WAL tag (i.e., was written to WAL and not modified since). Returns false if the wal_tag is TAG_UNSET (page was modified since last WAL write).
Sourcepub fn set_write_pending(&self)
pub fn set_write_pending(&self)
Mark page as having a WAL write in progress. This is set before starting a spill/cacheflush so we can detect if the page was modified during the write.
Sourcepub fn try_set_wal_tag(&self, frame: u64, epoch: u32) -> bool
pub fn try_set_wal_tag(&self, frame: u64, epoch: u32) -> bool
Try to set the WAL tag, but only if the page wasn’t modified during the write. Returns true if the tag was set, false if the page was modified (wal_tag became TAG_UNSET).
pub fn is_valid_for_checkpoint(&self, target_frame: u64, epoch: u32) -> bool
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Page
impl !RefUnwindSafe for Page
impl Unpin for Page
impl UnsafeUnpin for Page
impl UnwindSafe for Page
Blanket Implementations§
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> ErasedDestructor for Twhere
T: 'static,
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more