MDB_page Struct Reference
[LMDB Internals]

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]

Detailed Description

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.


Field Documentation

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

lower bound of free space

upper bound of free space

number of overflow pages

dynamic size


The documentation for this struct was generated from the following file:
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines

Generated on 3 Apr 2026 for LMDB by  doxygen 1.6.1