-
Notifications
You must be signed in to change notification settings - Fork 216
Releases: cberner/redb
Releases Β· cberner/redb
4.1.0
This release contains a large number of bug fixes discovered by AI coding agents
- Fix a bug where
MultimapValue::len()andis_empty()returned stale counts after
consuming entries vianext_back(). - Fix a bug where
restore_savepoint()used in a non-Immediatedurability transaction and when
there are persistent savepoints newer than the one being restored, could fail
withSavepointError::InvalidSavepoint, but the savepoint would actually be partially applied.
The call now fails up front withSavepointError::ImmediateDurabilityRequired. - Fix a bug in
restore_savepoint()where modifications made earlier in the transaction might
not be reverted. - Fix a bug where renaming a table that was already modified in the same transaction could cause
the database to become corrupted. - Fix a bug where calling
restore_savepoint()after modifying a table in the same
transaction could cause the table to become corrupted in a future transaction. - Fix a panic when
delete_table()was called on a table that had been modified in the same
transaction. - Fix a panic in
restore_savepoint()when passed aSavepointfrom a differentDatabase.
SavepointError::InvalidSavepointis now returned instead. - Fix a bug where a transaction that created a persistent savepoint and was then
aborted could cause the database file to grow excessively, until theDatabasewas dropped. - Fix a panic in
check_integrity()when called while another transaction is still alive.
DatabaseError::TransactionInProgressis now returned instead. - Fix a bug where aborting a transaction that called
restore_savepoint()with a savepoint
when a newer savepoint existed could cause database space to be leaked. - Fix a bug where aborting a transaction that called
restore_savepoint()would leave more
recent savepoints invalid. - Improve performance when reading concurrently from multiple threads. Around 15% speedup on some benchmarks.
- Optimize cache usage, and general write performance. Around 1.5x speedup on some benchmarks.
- Optimize memory usage.
- Other performance optimizations.
Assets 2
6 people reacted
4.0.0
- Implement
DroponAccessGuardMutandAccessGuardMutInPlace, which requires that these be dropped
before theTablethey borrow from.
This fixes a critical bug where the accessor could outlive theTable, and be dropped after the
transaction had already committed. This could cause data loss due to the data in the accessor
being written out after the transaction had already completed. - Remove
Legacytype. To migrate off theLegacytype, use theLegacytype in the 3.x release
and copy the data to a table with plain tuples, before upgrading to the 4.x release.
Assets 2
8 people reacted
3.1.3
- Fix a data loss bug which can occur when the guard returned from
Table::get_mut()is dropped
after the transaction has been committed. - Add a warning to
Table::insert_reserve()indicating that it can cause data loss and recommending
to upgrade to the 4.0.0 release.
Assets 2
3.1.2
- Reduce memory usage of open databases
Assets 2
3 people reacted
3.1.1
- Fix panic which could occur when inserting into a table with fixed size keys when
debug_assertionsare enabled - Add additional information to the stats returned by
cache_stats()
Assets 2
3.1.0
- Implement
std::error::ErrorforSetDurabilityError - Fix compilation error on various non-tier-1 platforms, such as wasm32-unknown
Assets 2
5 people reacted
3.0.2
- Fix performance issue where a transaction with a large number of writes would cause
WriteTransaction::abort()and committing non-durable transactions to become slow
Assets 2
3.0.1
- Fix correctness issue with
range(),extract_from_if(), andretain_in(). If a RangeBounds
withstart>endwas passed as an argument andstartandendkeys were stored in different
internal pages in the database (i.e. a sufficient condition is that more than 4KiB of key-value
pairs were between the two keys) then these methods would perform as if the argument had been
start.. - Fix performance regression, from redb 2.x, where
Durability::Nonecommits could become linearly
slower during a series of transactions.
Assets 2
2.6.3
- Fix correctness issue with
range(),extract_from_if(), andretain_in(). If a RangeBounds
withstart>endwas passed as an argument andstartandendkeys were stored in different
internal pages in the database (i.e. a sufficient condition is that more than 4KiB of key-value
pairs were between the two keys) then these methods would perform as if the argument had been
start..
Assets 2
1.5.2
- Fix correctness issue with
range(),drain(), anddrain_filter(). If a RangeBounds
withstart>endwas passed as an argument andstartandendkeys were stored in different
internal pages in the database (i.e. a sufficient condition is that more than 4KiB of key-value
pairs were between the two keys) then these methods would perform as if the argument had been
start..