From 9abced434f459c20fd6629efa2be0b91e56de179 Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Thu, 27 Feb 2014 11:55:44 -0700 Subject: Add bucket reclamation. After RWTransaction.DeleteBucket() is called, all pages related to the bucket are moved to the freelist for that transaction. --- rwtransaction.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'rwtransaction.go') diff --git a/rwtransaction.go b/rwtransaction.go index d9097f3..ddd4b96 100644 --- a/rwtransaction.go +++ b/rwtransaction.go @@ -63,14 +63,18 @@ func (t *RWTransaction) CreateBucketIfNotExists(name string) error { // DeleteBucket deletes a bucket. // Returns an error if the bucket cannot be found. func (t *RWTransaction) DeleteBucket(name string) error { - if b := t.Bucket(name); b == nil { + b := t.Bucket(name) + if b == nil { return ErrBucketNotFound } // Remove from buckets page. t.buckets.del(name) - // TODO(benbjohnson): Free all pages. + // Free all pages. + t.forEachPage(b.root, 0, func(p *page, depth int) { + t.db.freelist.free(t.id(), p) + }) return nil } -- cgit v1.2.3