aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2019-01-16 01:36:56 +0100
committerDimitri Sokolyuk <demon@dim13.org>2019-01-16 01:36:56 +0100
commite7928b177e156a36dbbd253439f902ddbf4fd858 (patch)
tree0b09d0bcea944d858f58e304ef671da47232e882
parent3067a6dcc39b57a1315648fc55100646dd9da4fc (diff)
page
-rw-r--r--internal/hash/page.go21
1 files changed, 21 insertions, 0 deletions
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]
+ */