OpenBSD does not include a UBC kernel and writes must be synchronized
with the msync(2) syscall. In addition, the NoSync field of the DB
struct should be ignored on OpenBSD, since unlike other platforms,
missing msyncs will result in data corruption.
Depends on PR #258.
Fixes#257.
Rather than having the build setup such that it will only work on the
specifically defined operating systems, this commit modifies it to use
more liberal !windows,!plan9 build tag for the unix specific bits.
This means bolt will compile on more Operating Systems such as OpenBSD,
FreeBSD, and NetBSD.
See boltdb/bolt#257 for discussion.
This commit adds a caveat for high memory usage shown by processes with large
Bolt databases. This is expected behavior and is handled by the OS page cache.
This commit adds a caveat to the README to notify users that bulk loading
random writes into a single new bucket can be problematic. This issue was
reported by @freepk.
Fixes#244.
This commit fixes a bug that occurs when a root node is split just after a re-mmap occurs.
Previously, this would cause a panic because the new root node would still reference
keys from the old mmap.
This commit moves the DB.FillPercent field to Bucket.FillPercent. This
allows the fill percentage to be specified per-bucket, per-tx. This
value is not persisted and should be set whenever using it.
This commit fixes a bug where a root split on a very large insert would
cause an overflow of the root node. The problem was that the new root
was not split when it was created so a new root with more than 64K child
nodes would overflow the page.count (uint16).
This fixes an issue where split nodes can be double spilled. This is typically
not noticable but it can have large effects when bulk inserting as double
spilled nodes will get added to the freelist which will grow quickly.
This commit fixes an issue where large nodes would take up most of
the insert time because the entire node size would be calculated to
check if it could fit in a page or not. This changes the behavior
so that a node's size is only calculated up to the size it needs to
check and then returns.