Releases: cberner/redb
Releases Β· cberner/redb
v2.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)
1.4.0
- Add
Builder::set_repair_callback()
which can be used to set a callback function that will be invoked if the database needs repair while opening it. - Add support for custom storage backends. This is done by implementing the
StorageBackend
trait and
using theBuilder::create_with_backend
function. This allows the database to be stored in a location other
than the filesystem - Implement
RedbKey
andRedbValue
forchar
- Implement
RedbKey
andRedbValue
forbool
- Implement
TableHandle
forTable
- Implement
MultimapTableHandle
forMultimapTable
- Fix panic that could occur when inserting a large number of fixed width values into a table within a single transaction
- Fix panic when calling
delete_table()
on a table that is already open - Improve performance for fixed width types
- Support additional platforms
1.3.0
- Implement
RedbKey
forOption<T>
- Implement
RedbValue
forVec<T>
- Implement
Debug
for tables - Add
ReadableTable::first()
andlast()
which retrieve the first and last key-value pairs, respectively` - Reduce lock contention for mixed read-write workloads
- Documentation improvements