aboutsummaryrefslogtreecommitdiff
path: root/cmd/bolt/export_test.go (unfollow)
Commit message (Collapse)AuthorFilesLines
2014-04-11Upgrade import/export to use nested buckets.Ben Johnson8-27/+78
2014-04-11Add import/export to CLI.Ben Johnson11-24/+310
This commit adds two new commands: bolt import --input INPUT PATH bolt export PATH This exports the database in a simple, nested, key/value JSON document. Each node in the document has a "key", a "value", and an optional "type". The key and value fields are both base64 encoded.
2014-04-11Add nested buckets.Ben Johnson27-1498/+1948
This commit adds the ability to create buckets inside of other buckets. It also replaces the buckets page with a root bucket. Fixes #56.
2014-04-09add ldflags on build with main.commit and main.branch to MakefileSteven Normore2-2/+7
2014-04-09add bin to gitignoreSteven Normore1-0/+1
2014-04-08make all benchmarks constant size and add multiple sizesMartin Kobetic2-49/+35
2014-04-08add get/build targets to MakefileSteven Normore1-0/+8
2014-04-08fix typo in READMESteven Normore1-1/+1
2014-04-04Update cursor benchmark.Ben Johnson1-15/+19
2014-04-04Rename internal local Tx variables.Ben Johnson4-152/+152
This commit changes the local Tx variables from "t" to "tx". This is partly for consistency with external documentation but also because it just annoys me for some reason.
2014-04-04Add Tx.OnCommit() handler.Ben Johnson2-12/+58
This commit adds the ability to execute a function after a transaction has successfully committed.
2014-04-03READMEBen Johnson1-0/+1
Add 'Scuttlebutt' to list of projects that use Bolt.
2014-04-02Add meta page checksums.Ben Johnson3-10/+55
This commit adds checksums to the meta pages on every write. When the database loads, it verifies the checksums on the meta pages and returns an error if either one is corrupt. In the future, it should fallback to the previous meta page but for right now it just hard fails. This is at least preferable to opening the database and getting a random error or further corruption. Fixes #25.
2014-04-02Add performance counters.Ben Johnson8-100/+160
This commit adds performance counters for each transaction which are rolled up to the database level on each commit/rollback. Counters are meant to be a very fast way to track what is going on in the database. A few timers are also added in areas where the time.Now() overhead is not noticible. The DB.Stat() function is now deprecated since the `bolt` CLI now performs similar functions. Fixes #108.
2014-04-02Add advisory file locking.Ben Johnson1-0/+12
This commit adds advisory locking via flock() to the database file. This ensures that two separate processes cannot both open the same data file which would cause corruption. Fixes #110.
2014-04-02Consolidate file and metafile descriptors.Ben Johnson2-18/+10
Previously, a two file descriptors were used for the database: file & metafile. The "file" file descriptor was used for async writes while the "metafile" file descriptor was used with O_SYNC writes. This commit changes that so that there's only one file descriptor and it uses fdatasync() to synchronize writes.
2014-04-02READMEBen Johnson1-30/+1
Remove the 'Internals' section since it is half-assed right now.
2014-04-02Remove count and overflow columns for free pages on 'bolt pages'.Ben Johnson1-4/+12
The count and overflow columns are meaningless for freed pages since there could be random overflow data in there. This commit removes those columns for free pages.
2014-03-31Add DVID to projects using BoltBill Katz1-0/+1
DVID added Bolt as an optional storage engine.
2014-03-31Remove DB.Open() and only allow bolt.Open().Ben Johnson4-124/+79
Per @tv42's suggestion, this commit removes the ability to reopen an instance of DB. All open calls go through bolt.Open(). Fixes #103.
2014-03-31Write freelist after each commit.Ben Johnson6-10/+51
Well, this is embarassing. Somehow the freelist was never getting written after each commit. This commit fixes that and fixes a small reporting issue with "bolt pages".
2014-03-29Add DB.Check().Ben Johnson7-1/+140
2014-03-27Refactor bolt commands into individual files.Ben Johnson11-316/+395
2014-03-26Fix DB.Copy() meta lock and partial write checks.Ben Johnson1-1/+12
2014-03-25Fix quickcheck test for duplicate keys.Ben Johnson1-4/+15
2014-03-25Fix bucket reclamation.Ben Johnson3-9/+52
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-24READMEBen Johnson1-0/+7
Add a list of "Other Projects Using Bolt".
2014-03-24Make DB/Tx API more consistent.Ben Johnson8-149/+157
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-24Error refactoring.Ben Johnson8-106/+94
Fixed up a few error issues and refactored out the Error type.
2014-03-24Re-add tests for write failuresTommi Virtanen3-3/+78
Commit d2173f5f0ecbf4ed93c768e975435b04df3186ec 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-24Resolve remaining errcheck warnings.Ben Johnson2-11/+29
2014-03-23Check errors from file close in DB.CopyFileTommi Virtanen1-1/+5
Write errors are often delayed and reported only by the close. The extra close in defer on success is harmless, (*os.File).Close protects itself against multiple closes, and this way it's immediately obvious there is no code path that would leak open files.
2014-03-23Check spill error in CommitTommi Virtanen1-1/+3
2014-03-23Check meta page write error in CommitTommi Virtanen1-1/+3
2014-03-23Add ErrTxClosed error.Ben Johnson5-17/+89
Commit/Rollback and mutable calls on Tx and Bucket now return ErrTxClosed if the transaction has already been committed or rolled back. Non-mutable calls have added an assertion to check if the transaction is closed which will cause a panic. I don't want to introduce an error return for accessor methods that are being used improperly so I think the panic is appropriate.
2014-03-23Mark Do()/With() transaction as managed.Ben Johnson3-5/+43
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-23Consolidate syscall files.Ben Johnson2-1/+0
2014-03-23fix 32bit build fails: bucket.go#67binz1-1/+1
2014-03-22Call fdatasync/fsync after writing out non-meta pagesTommi Virtanen3-0/+23
This avoids a case where writes can be reordered so meta page is written before a page it refers to, potentially causing a corrupt database after a power loss or kernel crash.
2014-03-21Fix print.Ben Johnson1-6/+31
2014-03-21Add 'bolt buckets'.Ben Johnson2-0/+54
2014-03-21Add 'bolt set'.Ben Johnson2-3/+69
2014-03-21Add 'bolt pages'.Ben Johnson4-0/+97
2014-03-21Add 'bolt keys'.Ben Johnson2-3/+75
2014-03-21Add 'bolt get'.Ben Johnson2-0/+190
2014-03-21Fix db.munmap() to return an error.Ben Johnson9-347/+36
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-21Remove ease-of-use functions from the DB type.Ben Johnson6-500/+472
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-15Fix Bucket.ForEach() comment.Ben Johnson1-1/+2
2014-03-13Skip long-running tests with go test -shortTommi Virtanen3-0/+28
2014-03-13Fix Tx.Buckets() sort order.Ben Johnson2-0/+7
@tv42 reported an issue with bucket names returning incorrectly. Not sure if this fixes the issue but it is necessary anyway.