From fea388b03d67a26a6bb13e9b9363b15e72b7f2c5 Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Thu, 27 Mar 2014 22:36:05 -0600 Subject: Refactor bolt commands into individual files. --- cmd/bolt/pages.go | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 cmd/bolt/pages.go (limited to 'cmd/bolt/pages.go') 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 + }) +} -- cgit v1.2.3