Skip to content

Releases: cberner/redb

v2.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)

1.5.0

15 Jan 22:30
Compare
Choose a tag to compare
  • Export TableStats type
  • Export MutInPlaceValue which allows custom types to support insert_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

21 Nov 22:38
Compare
Choose a tag to compare
  • 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 the Builder::create_with_backend function. This allows the database to be stored in a location other
    than the filesystem
  • Implement RedbKey and RedbValue for char
  • Implement RedbKey and RedbValue for bool
  • Implement TableHandle for Table
  • Implement MultimapTableHandle for MultimapTable
  • 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

22 Oct 17:12
Compare
Choose a tag to compare
  • Implement RedbKey for Option<T>
  • Implement RedbValue for Vec<T>
  • Implement Debug for tables
  • Add ReadableTable::first() and last() which retrieve the first and last key-value pairs, respectively`
  • Reduce lock contention for mixed read-write workloads
  • Documentation improvements