Releases: cberner/redb
Releases Β· cberner/redb
2.2.0
2.1.4
- Optimize
first()
andlast()
to be almost 2x faster - Improve in-memory cache algorithm to resolve edge cases where certain pages could become
uncacheable under cache pressure - Fix bug in read cache where the read cache could become disabled. This was likely to occur in
multithreaded workloads when the read cache was smaller than the database file. This bug lead to
5-10x performance degradations for some workloads
2.1.3
- Significant performance optimizations to
compact()
- Fix some additional cases where
compact()
did not fully compact the database - Fix a panic that could occur in
commit()
orabort()
after an IO error.StorageError::PreviousIo
is now returned - Fix a potential panic that could occur when repairing the database after a crash
2.1.2
Major fixes:
- Fix leak of database space that could occur when calling
restore_savepoint()
- Fix leak of database space when calling
delete_multimap_table()
- Fix database corruption which could occur when restoring a savepoint. This edge case is rare,
and could only occur if the database was less than approximately 4TiB when the savepoint was
created, and greater than 4TiB when the savepoint was restored - Fix edge case where a transient I/O error that occurred during transaction commit, but then did
not reoccur when theDatabase
was dropped, could cause database corruption
Important: If your application has called restore_savepoint()
, delete_multimap_table()
,
or you suspect it may have experienced a transient I/O error during transaction commit.
It is recommended that you run check_integrity()
after upgrading to this version.
This will both detect corruption and clean up any leaked space.
Other changes and fixes:
- Optimize page freeing to reduce the size of the database file
- Fix several cases where
check_integrity()
would returnOk(false)
instead ofOk(true)
- Fix some cases where
compact()
did not fully compact the database - Make the metadata overhead returned by
WriteTransaction::stats()
more accurate - Return
StorageError::ValueTooLarge
when a key-value pair exceeds a total of 3.75GiB.
Previously, a panic would occur for key-value pairs that were approximately 4GiB. - Downgrade several
info!
log messages todebug!
- Improve documentation
2.1.1
2.1.0
2.0.0
Major file format change
2.0.0 uses a new file format that optimizes len()
to be constant time. This means that it is not
backwards compatible with 1.x. To upgrade, consider using a pattern like that shown in the
upgrade_v1_to_v2 test.
Other changes
check_integrity()
now returns aDatabaseError
instead of aStorageError
- Table metadata methods have moved to a new
ReadableTableMetadata
trait - Rename
RedbKey
toKey
- Rename
RedbValue
toValue
- Remove lifetimes from read-only tables
- Remove lifetime from
WriteTransaction
andReadTransaction
- Remove
drain()
anddrain_filter()
fromTable
. Useretain
,retain_in
,extract_if
orextract_from_if
instead - impl
Clone
forRange
- Add support for
[T;N]
as aValue
orKey
as appropriate for the typeT
- Add
len()
andis_empty()
toMultimapValue
- Add
retain()
andretain_in()
toTable
- Add
extract_if()
andextract_from_if()
toTable
- Add
range()
returning aRange
with the'static
lifetime to read-only tables - Add
get()
returning a range with the'static
lifetime to read-only tables - Add
close()
method toReadTransaction
2.0.0-beta0
Major file format change
2.0.0 uses a new file format that optimizes len()
to be constant time. This means that it is not
backwards compatible with 1.x. To upgrade, consider using a pattern like that in
upgrade_v1_to_v2 test.
Other changes
check_integrity()
now returns aDatabaseError
instead ofStorageError
- Refactor table metadata methods into a new
ReadableTableMetadata
trait - Rename
RedbKey
toKey
- Rename
RedbValue
toValue
- Remove lifetimes from read-only tables
- Remove lifetime from
WriteTransaction
andReadTransaction
- Remove
drain()
anddrain_filter()
fromTable
- impl
Clone
forRange
- Add
len()
andis_empty()
toMultimapValue
- Add
retain()
andretain_in()
toTable
- Add
extract_if()
andextract_from_if()
toTable
- Add
range()
returning aRange
with the'static
lifetime to read-only tables - Add
get()
returning a range with the'static
lifetime to read-only multimap tables - Add
close()
method toReadTransaction
1.5.1
1.5.0
- Export
TableStats
type - Export
MutInPlaceValue
which allows custom types to supportinsert_reserve()
- Add untyped table API which allows metadata, such as table stats, to be retrieved for at table
without knowing its type at compile time - Fix compilation on uncommon platforms (those other than Unix and Windows)