Skip to content

Releases: cberner/redb

2.3.0

11 Dec 03:14
Compare
Choose a tag to compare
  • 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::Paranoid is now deprecated. Use set_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

27 Oct 21:04
Compare
Choose a tag to compare
  • Implement TableHandle for ReadOnlyTable
  • Fix bug in write cache, which caused pages to be evicted randomly. Pages are now evicted based on
    how recently they have been accessed

2.1.4

11 Oct 03:09
Compare
Choose a tag to compare
  • Optimize first() and last() 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

14 Sep 21:35
Compare
Choose a tag to compare
  • 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() or abort() 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

26 Aug 04:18
Compare
Choose a tag to compare

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 the Database 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 return Ok(false) instead of Ok(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 to debug!
  • Improve documentation

2.1.1

09 Jun 17:56
Compare
Choose a tag to compare
  • Fix panic that occurred when calling compact() when a read transaction was in progress
  • Fix ReadTransaction::close() to return Ok when it succeeds
  • Performance optimizations

2.1.0

20 Apr 17:18
Compare
Choose a tag to compare
  • Implement Key and Value for String
  • Allow users to implement ReadableTableMetadata, ReadableTable, and ReadableMultimapTable

2.0.0

22 Mar 17:17
Compare
Choose a tag to compare

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 a DatabaseError instead of a StorageError
  • Table metadata methods have moved to a new ReadableTableMetadata trait
  • Rename RedbKey to Key
  • Rename RedbValue to Value
  • Remove lifetimes from read-only tables
  • Remove lifetime from WriteTransaction and ReadTransaction
  • Remove drain() and drain_filter() from Table. Use retain, retain_in, extract_if or extract_from_if instead
  • impl Clone for Range
  • Add support for [T;N] as a Value or Key as appropriate for the type T
  • Add len() and is_empty() to MultimapValue
  • Add retain() and retain_in() to Table
  • Add extract_if() and extract_from_if() to Table
  • Add range() returning a Range with the 'static lifetime to read-only tables
  • Add get() returning a range with the 'static lifetime to read-only tables
  • Add close() method to ReadTransaction

2.0.0-beta0

18 Mar 00:23
Compare
Choose a tag to compare
2.0.0-beta0 Pre-release
Pre-release

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 a DatabaseError instead of StorageError
  • Refactor table metadata methods into a new ReadableTableMetadata trait
  • Rename RedbKey to Key
  • Rename RedbValue to Value
  • Remove lifetimes from read-only tables
  • Remove lifetime from WriteTransaction and ReadTransaction
  • Remove drain() and drain_filter() from Table
  • impl Clone for Range
  • Add len() and is_empty() to MultimapValue
  • Add retain() and retain_in() to Table
  • Add extract_if() and extract_from_if() to Table
  • Add range() returning a Range 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 to ReadTransaction

1.5.1

17 Mar 04:29
Compare
Choose a tag to compare
  • Fix check_integrity() so that it returns Ok(true) when no repairs were preformed. Previously,
    it returned Ok(false)