aboutsummaryrefslogtreecommitdiff
path: root/cmd/bolt/pages.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/bolt/pages.go')
-rw-r--r--cmd/bolt/pages.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/cmd/bolt/pages.go b/cmd/bolt/pages.go
new file mode 100644
index 0000000..2b55c69
--- /dev/null
+++ b/cmd/bolt/pages.go
@@ -0,0 +1,46 @@
+package main
+
+import (
+ "os"
+ "strconv"
+
+ "github.com/boltdb/bolt"
+)
+
+// Pages prints a list of all pages in a database.
+func Pages(path string) {
+ if _, err := os.Stat(path); os.IsNotExist(err) {
+ fatal(err)
+ return
+ }
+
+ db, err := bolt.Open(path, 0600)
+ if err != nil {
+ fatal(err)
+ return
+ }
+ defer db.Close()
+
+ println("ID TYPE ITEMS OVRFLW")
+ println("======== ========== ====== ======")
+
+ db.Update(func(tx *bolt.Tx) error {
+ var id int
+ for {
+ p, err := tx.Page(id)
+ if err != nil {
+ fatalf("page error: %d: %s", id, err)
+ } else if p == nil {
+ break
+ }
+
+ var overflow string
+ if p.OverflowCount > 0 {
+ overflow = strconv.Itoa(p.OverflowCount)
+ }
+ printf("%-8d %-10s %-6d %-6s\n", p.ID, p.Type, p.Count, overflow)
+ id += 1 + p.OverflowCount
+ }
+ return nil
+ })
+}