| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|/
|
|
|
|
|
|
|
|
|
|
|
| |
This commit fixes a bug with seeks where seeking to a key between the end
of a page and the beginning of the next page causes it to return nil. This
was fixed by calling Cursor.next() when the cursor ends up between pages.
This also changes Cursor.Next() so that calling Next() at the end of a bucket
leaves the cursor at the end instead of zeroing out the stack.
Fixes #186.
/cc @PreetamJinka
|
|\
| |
| | |
Fix double free in merge-left rebalance.
|
|/
|
|
|
|
|
|
|
| |
This commit fixes a bug where deletions that caused merge-left rebalances were updating
the parent node which caused a node to "reappear" even after it had been deleted. This was
fixed in merge-right rebalances a while ago but merge-left is less frequent so it was
missed until now.
Many thanks to Jordan Sherer (@jsherer) for finding and reporting the bug.
|
|\
| |
| | |
Add fallback for O_DIRECT in Tx.Copy().
|
|/
|
|
|
| |
This commit adds the ability for Bolt to fallback to using a regular file open if Tx.Copy()
errors while opening with O_DIRECT. This only affects Linux.
|
|\
| |
| | |
Allow split nodes to be merged with the next node.
|
| | |
|
|/
|
|
|
|
|
|
|
| |
This commit changes the node.split() functionality to check if the next node has
available space and, if so, it will merge the newly split keys into the next node.
Previously, keys could be continually put into the left side of a split causing that
first half to split off small right side nodes. This was especially problematic with
databases with a high fill percent.
|
| |
|
| |
|
|\
| |
| | |
Fix `ExampleBucket_Put` to use `db.View` instead of `db.Update`.
|
|/ |
|
|\
| |
| | |
Add freelist assertion on every free().
|
|/
|
|
| |
This commit performs a check on the freelist pages to ensure that a double free can never happen.
|
|\
| |
| | |
Do not attempt manual transaction rollback in Tx.Copy
|
| |
| |
| |
| |
| |
| |
| | |
The typical use these days is with a managed transaction, via db.View.
The first case (error when re-opening database file) is not tested;
it is harder to instrument, and I have other plans for it.
|
|\ \
| |/
|/| |
Optimize Tx.Check().
|
| |
| |
| |
| | |
This commit removes several memory allocations occurring on every page and also caches the freelist map used when iterating over the pages. This results in significantly better performance.
|
|\|
| |
| | |
Add streaming check.
|
|/
|
|
|
| |
This commit changes Tx.Check() to return a channel through which check errors are returned. This allows
errors to be found before checking the entire data file.
|
|\
| |
| | |
Add circular dependency integrity check.
|
|/
|
|
|
|
| |
This commit adds a check to prevent circular dependencies in branch nodes. If a circular dependency occurs
then a panic will be called and the commit will be prevented. This only works for a single branch level
and will not recursively search the tree.
|
|\
| |
| | |
Remove DB.Check(). Allow read-only Tx.Check().
|
|/
|
|
|
|
|
| |
This commit removes the DB.Check() function and instead makes the user decide
whether a transaction should be writable or read-only. Tx.Check() is not safe
to use concurrently on a read-only transaction, however, it significantly
improves the performance of it.
|
|\ |
|
| |\
| | |
| | | |
Remove allocations from read-only buckets.
|
| | | |
|
|/ /
| |
| |
| |
| | |
This commit change the database copy to use O_DIRECT so that the Linux page
cache is not trashed during a backup. This is only available on Linux.
|
|\|
| |
| | |
Fix freelist allocation direction.
|
| | |
|
| |
| |
| |
| |
| |
| | |
This commit fixes the freelist so that it frees from the beginning of the data file
instead of the end. It also adds a fast path for pages which can be allocated from
the first free pages and it includes read transaction stats.
|
|\ \
| | |
| | | |
Move Copy/CopyFile from DB to Tx and make sure it copies exactly Tx.Size() bytes
|
| | | |
|
| | | |
|
|/ / |
|
| | |
|
|/ |
|
|\
| |
| | |
Add option to adjust fill percentage.
|
| | |
|
|/
|
|
|
|
|
|
|
|
| |
This commit adds the ability to adjust the fill percentage for splitting nodes. This
works by setting a threshold that is a percentage of a total page size. When that
threshold is crossed during a split then a new node is created.
This is primarily beneficial for append-only workloads.
Fixes #163.
|
|\
| |
| | |
Add strict mode.
|
|/ |
|
|\
| |
| | |
Recursive/aggregate bucket stats
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|