From e7928b177e156a36dbbd253439f902ddbf4fd858 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 16 Jan 2019 01:36:56 +0100 Subject: page --- internal/hash/page.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 internal/hash/page.go diff --git a/internal/hash/page.go b/internal/hash/page.go new file mode 100644 index 0000000..1044f95 --- /dev/null +++ b/internal/hash/page.go @@ -0,0 +1,21 @@ +package hash + +/* + * routines dealing with a data page + * + * page format: + * ┌───┬────────┬────────┬────────┐ + * p │ n │ keyoff │ datoff │ keyoff │ + * ├───┴────┬───┴───┬────┴──┬─────┤ + * │ datoff │ free │ ptr │ ──> │ + * ├────────┴───────┴───────┴─────┤ + * │ F R E E A R E A │ + * ├──────────────┬───────────────┤ + * │ <──── ─ ─ ─ │ data │ + * ├────────┬─────┴────┬──────────┤ + * │ key │ data │ key │ + * └────────┴──────────┴──────────┘ + * + * Pointer to the free space is always: p[p[0] + 2] + * Amount of free space on the page is: p[p[0] + 1] + */ -- cgit v1.2.3