server/paged_btree library
Order-preserving B+-tree index built on PagedFile.
Maps binary keys (compared lexicographically via unsigned-byte
order) to 64-bit values (typically RowIds from a
PagedHeap). Supports point lookup, ordered
range scan, insert, and delete — all out-of-core, with one page
resident per descent step.
Page layout
Page 0 — header (16 bytes used):
offset field
------ -----
0 u32 magic 'DBT1'
4 u32 root page number
8 u32 entry count (informational)
12 u32 reserved
Leaf page (kind = 1):
offset field
------ -----
0 u8 kind = 1
1 u8 reserved
2 u16 entry count
4 u32 next-leaf page (0 = end)
8 packed entries:
u16 keyLen
u16 reserved
u64 value
keyLen bytes key
Internal page (kind = 2):
offset field
------ -----
0 u8 kind = 2
1 u8 reserved
2 u16 entry count
4 u32 leftmost child page
8 packed entries:
u16 keyLen
u16 reserved
u32 right child page
keyLen bytes key
Routing: a key k descends to the right child of the largest entry
whose key is <= k; if k < first entry key, descend to
leftmostChild.
Concurrency
Same as PagedFile / PagedHeap: callers serialise mutators externally. Reads can run concurrently with other reads.
Classes
- PagedBTree
- Out-of-core B+-tree index.