Skip to content

Commit a311649

Browse files
build(deps): Bump redb from 3.1.1 to 4.1.0 (#63)
Bumps [redb](https://github.com/cberner/redb) from 3.1.1 to 4.1.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/cberner/redb/releases">redb's releases</a>.</em></p> <blockquote> <h2>4.1.0</h2> <p><strong>This release contains a large number of bug fixes discovered by AI coding agents</strong></p> <ul> <li>Fix a bug where <code>MultimapValue::len()</code> and <code>is_empty()</code> returned stale counts after consuming entries via <code>next_back()</code>.</li> <li>Fix a bug where <code>restore_savepoint()</code> used in a non-<code>Immediate</code> durability transaction and when there are persistent savepoints newer than the one being restored, could fail with <code>SavepointError::InvalidSavepoint</code>, but the savepoint would actually be partially applied. The call now fails up front with <code>SavepointError::ImmediateDurabilityRequired</code>.</li> <li>Fix a bug in <code>restore_savepoint()</code> where modifications made earlier in the transaction might not be reverted.</li> <li>Fix a bug where renaming a table that was already modified in the same transaction could cause the database to become corrupted.</li> <li>Fix a bug where calling <code>restore_savepoint()</code> after modifying a table in the same transaction could cause the table to become corrupted in a future transaction.</li> <li>Fix a panic when <code>delete_table()</code> was called on a table that had been modified in the same transaction.</li> <li>Fix a panic in <code>restore_savepoint()</code> when passed a <code>Savepoint</code> from a different <code>Database</code>. <code>SavepointError::InvalidSavepoint</code> is now returned instead.</li> <li>Fix a bug where a transaction that created a persistent savepoint and was then aborted could cause the database file to grow excessively, until the <code>Database</code> was dropped.</li> <li>Fix a panic in <code>check_integrity()</code> when called while another transaction is still alive. <code>DatabaseError::TransactionInProgress</code> is now returned instead.</li> <li>Fix a bug where aborting a transaction that called <code>restore_savepoint()</code> with a savepoint when a newer savepoint existed could cause database space to be leaked.</li> <li>Fix a bug where aborting a transaction that called <code>restore_savepoint()</code> would leave more recent savepoints invalid.</li> <li>Improve performance when reading concurrently from multiple threads. Around 15% speedup on some benchmarks.</li> <li>Optimize cache usage, and general write performance. Around 1.5x speedup on some benchmarks.</li> <li>Optimize memory usage.</li> <li>Other performance optimizations.</li> </ul> <h2>4.0.0</h2> <ul> <li>Implement <code>Drop</code> on <code>AccessGuardMut</code> and <code>AccessGuardMutInPlace</code>, which requires that these be dropped before the <code>Table</code> they borrow from. This fixes a critical bug where the accessor could outlive the <code>Table</code>, 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.</li> <li>Remove <code>Legacy</code> type. To migrate off the <code>Legacy</code> type, use the <code>Legacy</code> type in the 3.x release and copy the data to a table with plain tuples, before upgrading to the 4.x release.</li> </ul> <h2>3.1.3</h2> <ul> <li>Fix a data loss bug which can occur when the guard returned from <code>Table::get_mut()</code> is dropped after the transaction has been committed.</li> <li>Add a warning to <code>Table::insert_reserve()</code> indicating that it can cause data loss and recommending to upgrade to the 4.0.0 release.</li> </ul> <h2>3.1.2</h2> <ul> <li>Reduce memory usage of open databases</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/cberner/redb/blob/master/CHANGELOG.md">redb's changelog</a>.</em></p> <blockquote> <h2>4.1.0 - 2026-04-19</h2> <p><strong>This release contains a large number of bug fixes discovered by AI coding agents</strong></p> <ul> <li>Fix a bug where <code>MultimapValue::len()</code> and <code>is_empty()</code> returned stale counts after consuming entries via <code>next_back()</code>.</li> <li>Fix a bug where <code>restore_savepoint()</code> used in a non-<code>Immediate</code> durability transaction and when there are persistent savepoints newer than the one being restored, could fail with <code>SavepointError::InvalidSavepoint</code>, but the savepoint would actually be partially applied. The call now fails up front with <code>SavepointError::ImmediateDurabilityRequired</code>.</li> <li>Fix a bug in <code>restore_savepoint()</code> where modifications made earlier in the transaction might not be reverted.</li> <li>Fix a bug where renaming a table that was already modified in the same transaction could cause the database to become corrupted.</li> <li>Fix a bug where calling <code>restore_savepoint()</code> after modifying a table in the same transaction could cause the table to become corrupted in a future transaction.</li> <li>Fix a panic when <code>delete_table()</code> was called on a table that had been modified in the same transaction.</li> <li>Fix a panic in <code>restore_savepoint()</code> when passed a <code>Savepoint</code> from a different <code>Database</code>. <code>SavepointError::InvalidSavepoint</code> is now returned instead.</li> <li>Fix a bug where a transaction that created a persistent savepoint and was then aborted could cause the database file to grow excessively, until the <code>Database</code> was dropped.</li> <li>Fix a panic in <code>check_integrity()</code> when called while another transaction is still alive. <code>DatabaseError::TransactionInProgress</code> is now returned instead.</li> <li>Fix a bug where aborting a transaction that called <code>restore_savepoint()</code> with a savepoint when a newer savepoint existed could cause database space to be leaked.</li> <li>Fix a bug where aborting a transaction that called <code>restore_savepoint()</code> would leave more recent savepoints invalid.</li> <li>Improve performance when reading concurrently from multiple threads. Around 15% speedup on some benchmarks.</li> <li>Optimize cache usage, and general write performance. Around 1.5x speedup on some benchmarks.</li> <li>Optimize memory usage.</li> <li>Other performance optimizations.</li> </ul> <h2>4.0.0 - 2026-04-02</h2> <ul> <li>Implement <code>Drop</code> on <code>AccessGuardMut</code> and <code>AccessGuardMutInPlace</code>, which requires that these be dropped before the <code>Table</code> they borrow from. This fixes a critical bug where the accessor could outlive the <code>Table</code>, 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.</li> <li>Remove <code>Legacy</code> type. To migrate off the <code>Legacy</code> type, use the <code>Legacy</code> type in the 3.x release and copy the data to a table with plain tuples, before upgrading to the 4.x release.</li> </ul> <h2>3.1.3 - 2026-04-02</h2> <ul> <li>Fix a data loss bug which can occur when the guard returned from <code>Table::get_mut()</code> is dropped after the transaction has been committed.</li> <li>Add a warning to <code>Table::insert_reserve()</code> indicating that it can cause data loss and recommending to upgrade to the 4.0.0 release.</li> </ul> <h2>3.1.2 - 2026-04-01</h2> <ul> <li>Reduce memory usage of open databases</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/cberner/redb/commit/6ed1f981ba4deab0b2adbdd7bccb46ec409b2191"><code>6ed1f98</code></a> Bump version to 4.1.0</li> <li><a href="https://github.com/cberner/redb/commit/0a87cb7c6bbef9d42a3d13317b5beaf4063e16e6"><code>0a87cb7</code></a> Update changelog</li> <li><a href="https://github.com/cberner/redb/commit/03966a5050a3a6bef1045032d698f65b84a1eec9"><code>03966a5</code></a> Require callers of get_page to provide a PageHint</li> <li><a href="https://github.com/cberner/redb/commit/a75927ff26d64f389e0050140654a39f239213a3"><code>a75927f</code></a> Remove some TODO comments</li> <li><a href="https://github.com/cberner/redb/commit/a39779be8857b644476e64ddbe557082dd03644d"><code>a39779b</code></a> Avoid allocating a page for a branch that will be immediately merged</li> <li><a href="https://github.com/cberner/redb/commit/6374134252e7e128e5f98a4f04cf8bfdab9b3191"><code>6374134</code></a> Document that Table{,Multimap}Definition::new panic on empty names</li> <li><a href="https://github.com/cberner/redb/commit/ba043e3816a81d93734e4533bc87465885496f61"><code>ba043e3</code></a> Avoid copying keys in leaf overwrite paths</li> <li><a href="https://github.com/cberner/redb/commit/f42c468e008cfb7331d685ab2b675934bcec12ca"><code>f42c468</code></a> Fix MultimapValue::next_back() not decrementing remaining counter</li> <li><a href="https://github.com/cberner/redb/commit/3756148e34e912206a382ef4224b3942d2d8aaa4"><code>3756148</code></a> Clarify API contract for Key and Value traits</li> <li><a href="https://github.com/cberner/redb/commit/45523720a87ca0803264335e28538baabe6e04ae"><code>4552372</code></a> Consolidate WriteTransaction savepoint lifecycle state</li> <li>Additional commits viewable in <a href="https://github.com/cberner/redb/compare/v3.1.1...v4.1.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=redb&package-manager=cargo&previous-version=3.1.1&new-version=4.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1 parent b39d56b commit a311649

2 files changed

Lines changed: 3 additions & 3 deletions

File tree

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ uuid = { version = "1.23", features = ["v4"] }
103103
regex = "1.11"
104104

105105
# Persistent storage (pure Rust, B-tree, ACID)
106-
redb = "3.1"
106+
redb = "4.1"
107107

108108
# CRC (WAL integrity)
109109
crc32fast = "1.4"

0 commit comments

Comments
 (0)