Data Fields | |
| union { | |
| pgno_t p_pgno | |
| struct MDB_page * p_next | |
| } | mp_p |
| uint16_t | mp_pad |
| uint16_t | mp_flags |
| union { | |
| struct { | |
| indx_t pb_lower | |
| indx_t pb_upper | |
| } pb | |
| uint32_t pb_pages | |
| } | mp_pb |
| indx_t | mp_ptrs [1] |
Common header for all page types. The page type depends on mp_flags.
P_BRANCH and P_LEAF pages have unsorted 'MDB_node's at the end, with sorted mp_ptrs[] entries referring to them. Exception: P_LEAF2 pages omit mp_ptrs and pack sorted MDB_DUPFIXED values after the page header.
P_OVERFLOW records occupy one or more contiguous pages where only the first has a page header. They hold the real data of F_BIGDATA nodes.
P_SUBP sub-pages are small leaf "pages" with duplicate data. A node with flag F_DUPDATA but not F_SUBDATA contains a sub-page. (Duplicate data can also go in sub-databases, which use normal pages.)
P_META pages contain MDB_meta, the start point of an LMDB snapshot.
Each non-metapage up to MDB_meta.mm_last_pg is reachable exactly once in the snapshot: Either used by a database or listed in a freeDB record.
page number
struct MDB_page* MDB_page::p_next [read] |
for in-memory list of freed pages
| uint16_t MDB_page::mp_pad |
key size if this is a LEAF2 page
| uint16_t MDB_page::mp_flags |
lower bound of free space
upper bound of free space
| uint32_t MDB_page::pb_pages |
number of overflow pages
dynamic size
1.6.1