Stores the current state of the overflow file The cursors in use are stored here so that we can write new pages directly to the overflow file, and in the case of an interruption and rollback the header will still record the correct place in the file to allocate new pages The first page managed by each handle is also stored for cases where we wish to iterate through all the managed pages (e.g. whe
| 25 | // The first page managed by each handle is also stored for cases where we wish to iterate through |
| 26 | // all the managed pages (e.g. when reclaiming pages) |
| 27 | struct StringOverflowFileHeader { |
| 28 | struct Entry { |
| 29 | common::page_idx_t startPageIdx{common::INVALID_PAGE_IDX}; |
| 30 | PageCursor cursor; |
| 31 | } entries[NUM_HASH_INDEXES]; |
| 32 | |
| 33 | // pages starts at one to reserve space for this header |
| 34 | StringOverflowFileHeader() : entries{} {} |
| 35 | }; |
| 36 | static_assert(std::has_unique_object_representations_v<StringOverflowFileHeader>); |
| 37 | |
| 38 | class OverflowFileHandle { |