Commit Graph

39 Commits (2327fd97d71e1db1b7794757912bd6f384741ef0)

Author SHA1 Message Date
Ben Johnson d8e4cffa12 Fix bucket reclamation.
The bucket page is allocated separately from the rest of the pages but the old bucket pages were
not being added to the freelist. This change fixes that and adds a simple check for database
consistency. More advanced consistency checks can be added in the future.

Fixes #82.
2014-03-25 07:25:00 -06:00
Ben Johnson f8ad21bad3 Make DB/Tx API more consistent.
I consolidated the DB.Tx() and DB.RWTx() calls into a single
DB.Begin(writable bool) call. This is more consistent with the
database/sql library.

I also changed the DB.Do() and DB.With() call to DB.Update() and
DB.View(), respectively. This is more intuitive and more inline with
other database verbiage.
2014-03-24 11:43:06 -06:00
Ben Johnson 59fde2f664 Error refactoring.
Fixed up a few error issues and refactored out the Error type.
2014-03-24 08:31:15 -06:00
Tommi Virtanen e9b2cab0fa Re-add tests for write failures
Commit d2173f5f0e removed the complete
os & syscall mocking layer as overly complex. This commit adds back
the simplest possible thing: hooks to control the database file
writes.

Missing tests: TestDBOpenMetaFileError, TestDBMmapStatError.
These are harder to test without more extensive mocking.

Conflicts:
	db_test.go
2014-03-24 07:47:33 -06:00
Ben Johnson 76f6ead6b0 Mark Do()/With() transaction as managed.
Transaction created from Do() and With() are now considered "managed".
Managed transactions cannot be manually committed or rolled back since
the Do() and With() functions provide that functionally automatically.
Previously, a Tx could be manually committed and then any changes after
that would be lost.
2014-03-23 10:34:53 -06:00
Ben Johnson d2173f5f0e Fix db.munmap() to return an error.
Changes munmap to return an error and the DB now implements io.Closer.
I also removed all the OS and Syscall mocking because it's causing issues.
Corrupt file tests need to be recreated but directly using the file system
instead.
2014-03-21 13:21:33 -06:00
Ben Johnson 3cc959fb1a Remove ease-of-use functions from the DB type.
Functions such as DB.Put(), DB.Get(), and DB.Delete() were originally
added to be easy to use, however, after implementing Bolt in multiple
projects I have found these ease-of-use functions useless. Nearly
every use case requires multiple calls in a single transaction.

Using the DB ease of use functions turned out to be an antipattern.
2014-03-21 09:52:01 -06:00
Ben Johnson c551e45a47 Consolidate Tx and RWTx. 2014-03-08 20:40:48 -07:00
Ben Johnson 57376f0905 Rename Transaction to Tx.
I changed the Transaction/RWTransaction types to Tx/RWTx, respectively. This makes the naming
more consistent with other packages such as database/sql. The txnid is changed to txid as well.
2014-03-08 17:04:02 -07:00
Ben Johnson 64fcacedfa Add benchmarks. 2014-03-04 13:23:46 -07:00
Ben Johnson 956453b69f Minor refactor. 2014-02-28 15:13:07 -07:00
Ben Johnson a47c50295a Add bolt.Open().
Per the suggestion of @tv42 and @cespare, this commit adds a package level
function to create and initialize a database at a given path. This is
a common interface for database packages.
2014-02-26 16:32:40 -07:00
Ben Johnson a544249dd8 Refactor Bucket. 2014-02-23 08:32:53 -07:00
Ben Johnson 3b2fd8f2d3 Revert "Refactor Transaction/Bucket API."
This reverts commit 1ad2b99f28.
2014-02-22 22:54:54 -07:00
Ben Johnson 1ad2b99f28 Refactor Transaction/Bucket API. 2014-02-21 22:57:50 -07:00
Ben Johnson 9827df70e0 Add DB.Stat(). 2014-02-21 09:49:15 -07:00
Ben Johnson b22480fd32 Add Transaction.ForEach(). 2014-02-16 13:59:07 -07:00
Ben Johnson 149afc8c9b Rename errors. 2014-02-16 12:18:44 -07:00
Ben Johnson d1952237ed Improve test coverage. 2014-02-15 23:45:17 -07:00
Ben Johnson 7fb06feea4 Add parallel usage test and race detector. 2014-02-15 21:50:34 -07:00
Ben Johnson 56b825fb56 Add transactional blocks. 2014-02-15 14:54:45 -07:00
Ben Johnson 0ebef9c0bb Add examples. 2014-02-14 08:34:04 -07:00
Ben Johnson 8ad59edd02 API Documentation. 2014-02-13 10:58:27 -07:00
Ben Johnson 7bb878ff69 Mmap remap. 2014-02-12 11:49:57 -07:00
Ben Johnson 509e93dff4 Add freelist. 2014-02-10 14:04:01 -07:00
Ben Johnson 8b3b81ef47 Fix quick tests. 2014-02-05 07:56:13 -07:00
Ben Johnson 0cae98efc5 Add RWTransaction.Delete(). 2014-02-03 14:33:51 -07:00
Ben Johnson 1a17a2cf1e Add RWTransaction.Put(). 2014-02-01 12:30:37 -05:00
Ben Johnson a901cf6a25 Clean up API. 2014-01-31 12:22:58 -05:00
Ben Johnson 149d48fb9e Fix leaf/branch deserialization. 2014-01-30 00:11:46 -05:00
Ben Johnson 4fc84daf2a Refactor meta.copy() and page.init(). 2014-01-29 22:35:58 -05:00
Ben Johnson a942c1d168 Add tpage.put() test. 2014-01-28 15:16:22 -05:00
Ben Johnson 044d7b7893 Clean up test suite. 2014-01-28 14:52:09 -05:00
Ben Johnson ef590ecdfb lpage 2014-01-27 22:22:37 -05:00
Ben Johnson 79d9b6bb5a Begin Transaction.Cursor(). 2014-01-13 10:35:04 -07:00
Ben Johnson f1d7fe5b08 Finish open coverage. 2014-01-13 08:25:56 -07:00
Ben Johnson 47224c4387 Mock syscall. 2014-01-12 15:50:35 -07:00
Ben Johnson 28c1e86a27 Mock OS and File. 2014-01-12 15:30:09 -07:00
Ben Johnson ee24437bfc Initial db.open. 2014-01-11 22:51:01 -07:00