BTreeLeafPage

Struct BTreeLeafPage 

Source
pub struct BTreeLeafPage {
    pub slot_count: usize,
    pub tuple_scheme: Schema,
    /* private fields */
}
Expand description

A leaf page in the B+ tree.

§Binary Layout

  • 4 bytes: page category
  • 4 bytes: parent page index
  • 4 bytes: left sibling page index
  • 4 bytes: right sibling page index
  • n bytes: header bytes, indicate whether every slot of the page is used or not.
  • n bytes: tuple bytes

Fields§

§slot_count: usize§tuple_scheme: Schema

Implementations§

Source§

impl BTreeLeafPage

Source

pub fn set_right_pid(&mut self, pid: Option<BTreePageID>)

Source

pub fn get_right_pid(&self) -> Option<BTreePageID>

Source

pub fn set_left_pid(&mut self, pid: Option<BTreePageID>)

Source

pub fn get_left_pid(&self) -> Option<BTreePageID>

Source

pub fn get_slots_count(&self) -> usize

Source

pub fn stable(&self) -> bool

stable means at least half of the page is occupied

Source

pub fn empty_slots_count(&self) -> usize

Source

pub fn tuples_count(&self) -> usize

Returns the number of tuples currently stored on this page

Source

pub fn calculate_header_size(slot_count: usize) -> usize

Source

pub fn insert_tuple(&mut self, tuple: &Tuple)

Adds the specified tuple to the page such that all records remain in sorted order; the tuple should be updated to reflect that it is now stored on this page. tuple: The tuple to add.

Source

pub fn get_tuple(&self, slot_index: usize) -> Option<Tuple>

Source

pub fn delete_tuple(&mut self, slot_index: usize)

Source

pub fn is_slot_used(&self, slot_index: usize) -> bool

Returns true if associated slot on this page is filled.

Source

pub fn mark_slot_status(&mut self, slot_index: usize, used: bool)

Source

pub fn check_integrity( &self, parent_pid: &BTreePageID, lower_bound: Option<IntField>, upper_bound: Option<IntField>, check_occupancy: bool, depth: usize, )

Source

pub fn iter(&self) -> BTreeLeafPageIterator<'_>

Source§

impl BTreeLeafPage

Source

pub fn calculate_slots_count(scheme: &Schema) -> usize

Retrieve the maximum number of tuples this page can hold.

Trait Implementations§

Source§

impl BTreePage for BTreeLeafPage

Source§

fn get_page_data(&self) -> Vec<u8>

Generates a byte array representing the contents of this page. Used to serialize this page to disk.

The invariant here is that it should be possible to pass the byte array generated by get_page_data to the BTreeLeafPage constructor and have it produce an identical BTreeLeafPage object.

Source§

fn new( pid: &BTreePageID, bytes: &[u8], tuple_scheme: &Schema, key_field: usize, ) -> Self

Source§

fn get_pid(&self) -> BTreePageID

Source§

fn get_parent_pid(&self) -> BTreePageID

Source§

fn set_parent_pid(&mut self, pid: &BTreePageID)

Source§

fn set_before_image(&mut self)

Source§

fn get_before_image(&self) -> Vec<u8>

Provide a representation of this page before any modifications were made to it. Used by recovery.
Source§

fn peek(&self)

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.