Releases: cberner/redb
Releases Β· cberner/redb
2.5.0
- Add
rename_table()andrename_multimap_table() - Add
KeyandValueimplementations for the unary tuple type (i.e.(T,)) - Fix an issue which could cause a panic when concurrently performing read and write transactions,
whendebug_assertionswere enabled - Optimize
retain()andretain_in()to use less space in the database file - Improve handling of some internal errors to return
LockPoisonedinstead of panicking
2.4.0
- Add
Database::cache_stats() - Fix
open()andcreate()to returnInvalidDatawhen they are called on a database file
that is not a valid redb database - Significantly speed up
restore_savepoint(). The time is takes now scales with the change delta
since the savepoint was captured, rather than the size of the database file DatabaseStats::fragmented_bytes()is now more accurate
2.3.0
- Add
WriteTransaction::set_two_phase_commit() - Add
WriteTransaction::set_quick_repair()which enables a faster repair mechanism at the cost of
slower transaction commits Durability::Paranoidis now deprecated. Useset_two_phase_commit(true)instead- Fix various bugs when repairing the database after an unclean shutdown. These could result in
panics, leaked space in the database file, or database corruption
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::PreviousIois 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 theDatabasewas 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::ValueTooLargewhen 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 aDatabaseErrorinstead of aStorageError- Table metadata methods have moved to a new
ReadableTableMetadatatrait - Rename
RedbKeytoKey - Rename
RedbValuetoValue - Remove lifetimes from read-only tables
- Remove lifetime from
WriteTransactionandReadTransaction - Remove
drain()anddrain_filter()fromTable. Useretain,retain_in,extract_iforextract_from_ifinstead - impl
CloneforRange - Add support for
[T;N]as aValueorKeyas appropriate for the typeT - Add
len()andis_empty()toMultimapValue - Add
retain()andretain_in()toTable - Add
extract_if()andextract_from_if()toTable - Add
range()returning aRangewith the'staticlifetime to read-only tables - Add
get()returning a range with the'staticlifetime to read-only tables - Add
close()method toReadTransaction