Skip to content

Commit 2009717

Browse files
committed
Update to 2024 edition
1 parent 306d46c commit 2009717

25 files changed

+148
-139
lines changed

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ repository = "https://github.com/cberner/redb"
66
readme = "README.md"
77
license = "MIT OR Apache-2.0"
88
version = "2.4.0"
9-
edition = "2021"
9+
edition = "2024"
1010
rust-version = "1.85"
1111
authors = ["Christopher Berner <[email protected]>"]
1212
exclude = ["fuzz/"]

benches/syscall_benchmark.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use tempfile::{NamedTempFile, TempDir};
22

3-
use rand::prelude::SliceRandom;
43
use rand::Rng;
4+
use rand::prelude::SliceRandom;
55
use std::env::current_dir;
66
use std::fs::OpenOptions;
77
use std::io::{IoSlice, Read, Seek, SeekFrom, Write};

benches/userspace_cache_benchmark.rs

+8-7
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ use tempfile::NamedTempFile;
55

66
#[cfg(target_os = "linux")]
77
mod unix {
8-
use rand::prelude::SliceRandom;
98
use rand::Rng;
9+
use rand::prelude::SliceRandom;
1010
use std::collections::BTreeMap;
1111
use std::fs::{File, OpenOptions};
1212
use std::io::{IoSlice, Seek, SeekFrom, Write};
@@ -83,12 +83,13 @@ mod unix {
8383
impl Drop for WritablePage<'_> {
8484
fn drop(&mut self) {
8585
let data = mem::take(&mut self.data);
86-
assert!(self
87-
.buffer
88-
.lock()
89-
.unwrap()
90-
.insert(self.page, Arc::new(data))
91-
.is_none());
86+
assert!(
87+
self.buffer
88+
.lock()
89+
.unwrap()
90+
.insert(self.page, Arc::new(data))
91+
.is_none()
92+
);
9293
}
9394
}
9495

examples/bincode_keys.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use std::fmt::Debug;
44

55
use bincode::{deserialize, serialize};
66
use redb::{Database, Error, Key, Range, TableDefinition, TypeName, Value};
7-
use serde::{de::DeserializeOwned, Deserialize, Serialize};
7+
use serde::{Deserialize, Serialize, de::DeserializeOwned};
88

99
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
1010
struct SomeKey {

src/backends.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
pub use crate::tree_store::file_backend::FileBackend;
21
pub use crate::tree_store::InMemoryBackend;
2+
pub use crate::tree_store::file_backend::FileBackend;

src/db.rs

+5-9
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use crate::transaction_tracker::{SavepointId, TransactionId, TransactionTracker};
22
use crate::tree_store::{
33
AllPageNumbersBtreeIter, BtreeHeader, BtreeRangeIter, FreedPageList, FreedTableKey,
4-
InternalTableDefinition, PageHint, PageNumber, RawBtree, SerializedSavepoint, TableTreeMut,
5-
TableType, TransactionalMemory, PAGE_SIZE,
4+
InternalTableDefinition, PAGE_SIZE, PageHint, PageNumber, RawBtree, SerializedSavepoint,
5+
TableTreeMut, TableType, TransactionalMemory,
66
};
77
use crate::types::{Key, Value};
88
use crate::{CompactionError, DatabaseError, Error, ReadOnlyTable, SavepointError, StorageError};
@@ -19,7 +19,7 @@ use std::{io, thread};
1919
use crate::error::TransactionError;
2020
use crate::sealed::Sealed;
2121
use crate::transactions::{
22-
AllocatorStateKey, AllocatorStateTree, ALLOCATOR_STATE_TABLE_NAME, SAVEPOINT_TABLE,
22+
ALLOCATOR_STATE_TABLE_NAME, AllocatorStateKey, AllocatorStateTree, SAVEPOINT_TABLE,
2323
};
2424
use crate::tree_store::file_backend::FileBackend;
2525
#[cfg(feature = "logging")]
@@ -1103,8 +1103,8 @@ mod test {
11031103
};
11041104
use std::fs::File;
11051105
use std::io::{ErrorKind, Read, Seek, SeekFrom};
1106-
use std::sync::atomic::{AtomicU64, Ordering};
11071106
use std::sync::Arc;
1107+
use std::sync::atomic::{AtomicU64, Ordering};
11081108

11091109
#[derive(Debug)]
11101110
struct FailingBackend {
@@ -1132,11 +1132,7 @@ mod test {
11321132
if self
11331133
.countdown
11341134
.fetch_update(Ordering::SeqCst, Ordering::SeqCst, |x| {
1135-
if x > 0 {
1136-
Some(x - 1)
1137-
} else {
1138-
None
1139-
}
1135+
if x > 0 { Some(x - 1) } else { None }
11401136
})
11411137
.is_err()
11421138
{

src/error.rs

+8-2
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,10 @@ impl Display for DatabaseError {
237237
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
238238
match self {
239239
DatabaseError::UpgradeRequired(actual) => {
240-
write!(f, "Manual upgrade required. Expected file format version {FILE_FORMAT_VERSION2}, but file is version {actual}")
240+
write!(
241+
f,
242+
"Manual upgrade required. Expected file format version {FILE_FORMAT_VERSION2}, but file is version {actual}"
243+
)
241244
}
242245
DatabaseError::RepairAborted => {
243246
write!(f, "Database repair aborted.")
@@ -515,7 +518,10 @@ impl Display for Error {
515518
write!(f, "DB corrupted: {msg}")
516519
}
517520
Error::UpgradeRequired(actual) => {
518-
write!(f, "Manual upgrade required. Expected file format version {FILE_FORMAT_VERSION2}, but file is version {actual}")
521+
write!(
522+
f,
523+
"Manual upgrade required. Expected file format version {FILE_FORMAT_VERSION2}, but file is version {actual}"
524+
)
519525
}
520526
Error::ValueTooLarge(len) => {
521527
write!(

src/multimap_table.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ use crate::multimap_table::DynamicCollectionType::{Inline, SubtreeV2};
33
use crate::sealed::Sealed;
44
use crate::table::{ReadableTableMetadata, TableStats};
55
use crate::tree_store::{
6-
btree_stats, AllPageNumbersBtreeIter, BranchAccessor, BranchMutator, Btree, BtreeHeader,
7-
BtreeMut, BtreeRangeIter, BtreeStats, Checksum, LeafAccessor, LeafMutator, Page, PageHint,
8-
PageNumber, PagePath, RawBtree, RawLeafBuilder, TransactionalMemory, UntypedBtree,
9-
UntypedBtreeMut, BRANCH, DEFERRED, LEAF, MAX_PAIR_LENGTH, MAX_VALUE_LENGTH,
6+
AllPageNumbersBtreeIter, BRANCH, BranchAccessor, BranchMutator, Btree, BtreeHeader, BtreeMut,
7+
BtreeRangeIter, BtreeStats, Checksum, DEFERRED, LEAF, LeafAccessor, LeafMutator,
8+
MAX_PAIR_LENGTH, MAX_VALUE_LENGTH, Page, PageHint, PageNumber, PagePath, RawBtree,
9+
RawLeafBuilder, TransactionalMemory, UntypedBtree, UntypedBtreeMut, btree_stats,
1010
};
1111
use crate::types::{Key, TypeName, Value};
1212
use crate::{AccessGuard, MultimapTableHandle, Result, StorageError, WriteTransaction};

src/table.rs

+16-16
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use crate::db::TransactionGuard;
22
use crate::sealed::Sealed;
33
use crate::tree_store::{
4-
AccessGuardMut, Btree, BtreeExtractIf, BtreeHeader, BtreeMut, BtreeRangeIter, PageHint,
5-
PageNumber, RawBtree, TransactionalMemory, MAX_PAIR_LENGTH, MAX_VALUE_LENGTH,
4+
AccessGuardMut, Btree, BtreeExtractIf, BtreeHeader, BtreeMut, BtreeRangeIter, MAX_PAIR_LENGTH,
5+
MAX_VALUE_LENGTH, PageHint, PageNumber, RawBtree, TransactionalMemory,
66
};
77
use crate::types::{Key, MutInPlaceValue, Value};
88
use crate::{AccessGuard, StorageError, WriteTransaction};
@@ -558,23 +558,23 @@ pub struct ExtractIf<
558558
}
559559

560560
impl<
561-
'a,
562-
K: Key + 'static,
563-
V: Value + 'static,
564-
F: for<'f> FnMut(K::SelfType<'f>, V::SelfType<'f>) -> bool,
565-
> ExtractIf<'a, K, V, F>
561+
'a,
562+
K: Key + 'static,
563+
V: Value + 'static,
564+
F: for<'f> FnMut(K::SelfType<'f>, V::SelfType<'f>) -> bool,
565+
> ExtractIf<'a, K, V, F>
566566
{
567567
fn new(inner: BtreeExtractIf<'a, K, V, F>) -> Self {
568568
Self { inner }
569569
}
570570
}
571571

572572
impl<
573-
'a,
574-
K: Key + 'static,
575-
V: Value + 'static,
576-
F: for<'f> FnMut(K::SelfType<'f>, V::SelfType<'f>) -> bool,
577-
> Iterator for ExtractIf<'a, K, V, F>
573+
'a,
574+
K: Key + 'static,
575+
V: Value + 'static,
576+
F: for<'f> FnMut(K::SelfType<'f>, V::SelfType<'f>) -> bool,
577+
> Iterator for ExtractIf<'a, K, V, F>
578578
{
579579
type Item = Result<(AccessGuard<'a, K>, AccessGuard<'a, V>)>;
580580

@@ -590,10 +590,10 @@ impl<
590590
}
591591

592592
impl<
593-
K: Key + 'static,
594-
V: Value + 'static,
595-
F: for<'f> FnMut(K::SelfType<'f>, V::SelfType<'f>) -> bool,
596-
> DoubleEndedIterator for ExtractIf<'_, K, V, F>
593+
K: Key + 'static,
594+
V: Value + 'static,
595+
F: for<'f> FnMut(K::SelfType<'f>, V::SelfType<'f>) -> bool,
596+
> DoubleEndedIterator for ExtractIf<'_, K, V, F>
597597
{
598598
fn next_back(&mut self) -> Option<Self::Item> {
599599
let entry = self.inner.next_back()?;

src/transactions.rs

+6-4
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ use crate::table::ReadOnlyUntypedTable;
66
use crate::transaction_tracker::{SavepointId, TransactionId, TransactionTracker};
77
use crate::tree_store::{
88
Btree, BtreeHeader, BtreeMut, BuddyAllocator, FreedPageList, FreedTableKey,
9-
InternalTableDefinition, Page, PageHint, PageNumber, SerializedSavepoint, TableTree,
10-
TableTreeMut, TableType, TransactionalMemory, MAX_PAIR_LENGTH, MAX_VALUE_LENGTH,
9+
InternalTableDefinition, MAX_PAIR_LENGTH, MAX_VALUE_LENGTH, Page, PageHint, PageNumber,
10+
SerializedSavepoint, TableTree, TableTreeMut, TableType, TransactionalMemory,
1111
};
1212
use crate::types::{Key, Value};
1313
use crate::{
@@ -1016,8 +1016,10 @@ impl WriteTransaction {
10161016
let pages: FreedPageList = item.value();
10171017
for i in 0..pages.len() {
10181018
let page = pages.get(i);
1019-
assert!(old_allocators[page.region as usize]
1020-
.is_allocated(page.page_index, page.page_order));
1019+
assert!(
1020+
old_allocators[page.region as usize]
1021+
.is_allocated(page.page_index, page.page_order)
1022+
);
10211023
old_allocators[page.region as usize].free(page.page_index, page.page_order);
10221024
}
10231025
}

src/tree_store/btree.rs

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::db::TransactionGuard;
22
use crate::tree_store::btree_base::{
3-
branch_checksum, leaf_checksum, BranchAccessor, BranchMutator, BtreeHeader, Checksum,
4-
LeafAccessor, BRANCH, DEFERRED, LEAF,
3+
BRANCH, BranchAccessor, BranchMutator, BtreeHeader, Checksum, DEFERRED, LEAF, LeafAccessor,
4+
branch_checksum, leaf_checksum,
55
};
66
use crate::tree_store::btree_iters::BtreeExtractIf;
77
use crate::tree_store::btree_mutator::MutateHelper;
@@ -578,9 +578,7 @@ impl<'a, K: Key + 'a, V: MutInPlaceValue + 'a> BtreeMut<'a, K, V> {
578578
#[cfg(feature = "logging")]
579579
trace!(
580580
"Btree(root={:?}): Inserting {:?} with {} reserved bytes for the value",
581-
&self.root,
582-
key,
583-
value_length
581+
&self.root, key, value_length
584582
);
585583
let mut freed_pages = self.freed_pages.lock().unwrap();
586584
let mut value = vec![0u8; value_length as usize];

src/tree_store/btree_base.rs

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use crate::tree_store::page_store::{xxh3_checksum, Page, PageImpl, PageMut, TransactionalMemory};
21
use crate::tree_store::PageNumber;
2+
use crate::tree_store::page_store::{Page, PageImpl, PageMut, TransactionalMemory, xxh3_checksum};
33
use crate::types::{Key, MutInPlaceValue, Value};
44
use crate::{Result, StorageError};
55
use std::cmp::Ordering;
@@ -358,11 +358,7 @@ impl<'a> LeafAccessor<'a> {
358358

359359
pub(crate) fn find_key<K: Key>(&self, query: &[u8]) -> Option<usize> {
360360
let (entry, found) = self.position::<K>(query);
361-
if found {
362-
Some(entry)
363-
} else {
364-
None
365-
}
361+
if found { Some(entry) } else { None }
366362
}
367363

368364
fn key_section_start(&self) -> usize {

src/tree_store/btree_iters.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
use crate::tree_store::btree_base::{BranchAccessor, LeafAccessor};
1+
use crate::Result;
22
use crate::tree_store::btree_base::{BRANCH, LEAF};
3+
use crate::tree_store::btree_base::{BranchAccessor, LeafAccessor};
34
use crate::tree_store::btree_iters::RangeIterState::{Internal, Leaf};
45
use crate::tree_store::btree_mutator::MutateHelper;
56
use crate::tree_store::page_store::{Page, PageImpl, TransactionalMemory};
67
use crate::tree_store::{BtreeHeader, PageNumber};
78
use crate::types::{Key, Value};
8-
use crate::Result;
99
use std::borrow::Borrow;
1010
use std::collections::Bound;
1111
use std::marker::PhantomData;

src/tree_store/btree_mutator.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::tree_store::btree_base::{
2-
BranchAccessor, BranchBuilder, BranchMutator, Checksum, LeafAccessor, LeafBuilder, LeafMutator,
3-
BRANCH, DEFERRED, LEAF,
2+
BRANCH, BranchAccessor, BranchBuilder, BranchMutator, Checksum, DEFERRED, LEAF, LeafAccessor,
3+
LeafBuilder, LeafMutator,
44
};
55
use crate::tree_store::btree_mutator::DeletionResult::{
66
DeletedBranch, DeletedLeaf, PartialBranch, PartialLeaf, Subtree,

src/tree_store/mod.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,18 @@ mod table_tree;
77
mod table_tree_base;
88

99
pub(crate) use btree::{
10-
btree_stats, Btree, BtreeMut, BtreeStats, PagePath, RawBtree, UntypedBtree, UntypedBtreeMut,
10+
Btree, BtreeMut, BtreeStats, PagePath, RawBtree, UntypedBtree, UntypedBtreeMut, btree_stats,
1111
};
1212
pub use btree_base::{AccessGuard, AccessGuardMut};
1313
pub(crate) use btree_base::{
14-
BranchAccessor, BranchMutator, BtreeHeader, Checksum, LeafAccessor, LeafMutator,
15-
RawLeafBuilder, BRANCH, DEFERRED, LEAF,
14+
BRANCH, BranchAccessor, BranchMutator, BtreeHeader, Checksum, DEFERRED, LEAF, LeafAccessor,
15+
LeafMutator, RawLeafBuilder,
1616
};
1717
pub(crate) use btree_iters::{AllPageNumbersBtreeIter, BtreeExtractIf, BtreeRangeIter};
18-
pub use page_store::{file_backend, InMemoryBackend, Savepoint};
1918
pub(crate) use page_store::{
20-
BuddyAllocator, Page, PageHint, PageNumber, SerializedSavepoint, TransactionalMemory,
21-
FILE_FORMAT_VERSION2, MAX_PAIR_LENGTH, MAX_VALUE_LENGTH, PAGE_SIZE,
19+
BuddyAllocator, FILE_FORMAT_VERSION2, MAX_PAIR_LENGTH, MAX_VALUE_LENGTH, PAGE_SIZE, Page,
20+
PageHint, PageNumber, SerializedSavepoint, TransactionalMemory,
2221
};
22+
pub use page_store::{InMemoryBackend, Savepoint, file_backend};
2323
pub(crate) use table_tree::{FreedPageList, FreedTableKey, TableTree, TableTreeMut};
2424
pub(crate) use table_tree_base::{InternalTableDefinition, TableType};

src/tree_store/page_store/buddy_allocator.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
use crate::tree_store::PageNumber;
12
use crate::tree_store::page_store::bitmap::{BtreeBitmap, U64GroupedBitmap};
23
use crate::tree_store::page_store::page_manager::MAX_MAX_PAGE_ORDER;
3-
use crate::tree_store::PageNumber;
44
use std::cmp::min;
55
#[cfg(test)]
66
use std::collections::HashSet;

src/tree_store/page_store/cached_file.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -463,12 +463,12 @@ impl PagedCachedFile {
463463

464464
#[cfg(test)]
465465
mod test {
466+
use crate::StorageBackend;
466467
use crate::backends::InMemoryBackend;
467-
use crate::tree_store::page_store::cached_file::PagedCachedFile;
468468
use crate::tree_store::PageHint;
469-
use crate::StorageBackend;
470-
use std::sync::atomic::Ordering;
469+
use crate::tree_store::page_store::cached_file::PagedCachedFile;
471470
use std::sync::Arc;
471+
use std::sync::atomic::Ordering;
472472

473473
// TODO: Switch to threaded wasi build for the tests
474474
#[cfg(not(target_os = "wasi"))]

src/tree_store/page_store/file_backend/windows.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use std::os::windows::io::RawHandle;
1010
const ERROR_LOCK_VIOLATION: i32 = 0x21;
1111
const ERROR_IO_PENDING: i32 = 997;
1212

13-
extern "system" {
13+
unsafe extern "system" {
1414
/// <https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-lockfile>
1515
fn LockFile(
1616
file: RawHandle,

0 commit comments

Comments
 (0)