pub struct BTreePageHeader {
pub header_offset: usize,
pub page_type: BTreePageType,
pub first_freeblock: u16,
pub cell_count: u16,
pub cell_content_start: u32,
pub fragmented_free_bytes: u8,
pub right_most_child: Option<PageNumber>,
}Expand description
Parsed B-tree page header.
Fields§
§header_offset: usizeOffset within the page where the B-tree page header begins (0 normally, 100 for page 1).
page_type: BTreePageTypePage type.
first_freeblock: u16Offset of the first freeblock in the freeblock list (0 if none).
cell_count: u16Number of cells on this page.
cell_content_start: u32Start of cell content area. A raw value of 0 decodes to 65536.
fragmented_free_bytes: u8Count of fragmented free bytes on this page.
right_most_child: Option<PageNumber>Right-most child page number for interior pages.
Implementations§
Source§impl BTreePageHeader
impl BTreePageHeader
Sourcepub const fn header_size(self) -> usize
pub const fn header_size(self) -> usize
Size of the B-tree page header in bytes (8 for leaf, 12 for interior).
Sourcepub fn parse(
page: &[u8],
page_size: PageSize,
reserved_per_page: u8,
is_page1: bool,
) -> Result<Self, BTreePageError>
pub fn parse( page: &[u8], page_size: PageSize, reserved_per_page: u8, is_page1: bool, ) -> Result<Self, BTreePageError>
Parse a B-tree page header from a page buffer.
Sourcepub fn parse_cell_pointers(
self,
page: &[u8],
page_size: PageSize,
reserved_per_page: u8,
) -> Result<Vec<u16>, BTreePageError>
pub fn parse_cell_pointers( self, page: &[u8], page_size: PageSize, reserved_per_page: u8, ) -> Result<Vec<u16>, BTreePageError>
Parse the cell pointer array for this page.
Sourcepub fn parse_freeblocks(
self,
page: &[u8],
page_size: PageSize,
reserved_per_page: u8,
) -> Result<Vec<Freeblock>, BTreePageError>
pub fn parse_freeblocks( self, page: &[u8], page_size: PageSize, reserved_per_page: u8, ) -> Result<Vec<Freeblock>, BTreePageError>
Traverse and parse the freeblock list for this page.
Sourcepub fn write_empty_leaf_table(
page: &mut [u8],
header_offset: usize,
usable_size: u32,
)
pub fn write_empty_leaf_table( page: &mut [u8], header_offset: usize, usable_size: u32, )
Write an empty leaf-table B-tree page header into a buffer.
Sets up the 8-byte B-tree page header for an empty leaf table page
(type 0x0D) with zero cells, suitable for sqlite_master or any
newly created table root page.
header_offset is the byte offset of the B-tree header within the
page buffer. For page 1 this must be DATABASE_HEADER_SIZE (100);
for every other page it should be 0.
usable_size equals page_size − reserved_per_page. The cell
content area offset is set to this value so that all usable space is
available for future cell insertions.
Sourcepub fn write_empty_leaf_index(
page: &mut [u8],
header_offset: usize,
usable_size: u32,
)
pub fn write_empty_leaf_index( page: &mut [u8], header_offset: usize, usable_size: u32, )
Initialize an empty leaf index page (type 0x0A) with zero cells,
suitable for a newly created index root page.
header_offset is the byte offset of the B-tree header within the
page buffer (0 for all non-page-1 pages).
usable_size equals page_size − reserved_per_page.
Trait Implementations§
Source§impl Clone for BTreePageHeader
impl Clone for BTreePageHeader
Source§fn clone(&self) -> BTreePageHeader
fn clone(&self) -> BTreePageHeader
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more