diff options
Diffstat (limited to 'log_db')
| -rw-r--r-- | log_db/benches/benchmark.rs | 12 | ||||
| -rw-r--r-- | log_db/src/lib.rs | 15 | ||||
| -rw-r--r-- | log_db/tests/integration.rs | 30 |
3 files changed, 29 insertions, 28 deletions
diff --git a/log_db/benches/benchmark.rs b/log_db/benches/benchmark.rs index 384c9b7..5174bdb 100644 --- a/log_db/benches/benchmark.rs +++ b/log_db/benches/benchmark.rs @@ -25,7 +25,7 @@ pub fn upsert_various_initial_sizes(c: &mut Criterion) { .expect("Failed to convert tmpdir path to str"); let mut db = DB::configure() .data_dir(&data_dir) - .fields(&vec![ + .fields(vec![ (Field::Id, RecordField::int()), (Field::Name, RecordField::string()), (Field::Data, RecordField::bytes()), @@ -60,7 +60,7 @@ pub fn upsert_write_durability(c: &mut Criterion) { .expect("Failed to convert tmpdir path to str"); let mut db = DB::configure() .data_dir(&data_dir) - .fields(&vec![ + .fields(vec![ (Field::Id, RecordField::int()), (Field::Name, RecordField::string()), (Field::Data, RecordField::bytes()), @@ -90,7 +90,7 @@ pub fn get_from_disk_various_initial_sizes(c: &mut Criterion) { let mut db = DB::configure() .data_dir(&data_dir) .memtable_capacity(0) - .fields(&vec![ + .fields(vec![ (Field::Id, RecordField::int()), (Field::Name, RecordField::string()), (Field::Data, RecordField::bytes()), @@ -122,7 +122,7 @@ pub fn get_various_memtable_capacities(c: &mut Criterion) { // Create a db instance for prefilling let mut db = DB::configure() .data_dir(&data_dir) - .fields(&vec![ + .fields(vec![ (Field::Id, RecordField::int()), (Field::Name, RecordField::string()), (Field::Data, RecordField::bytes()), @@ -140,7 +140,7 @@ pub fn get_various_memtable_capacities(c: &mut Criterion) { group.bench_with_input(BenchmarkId::from_parameter(size), &size, |b, &_size| { let mut db = DB::configure() .data_dir(&data_dir) - .fields(&vec![ + .fields(vec![ (Field::Id, RecordField::int()), (Field::Name, RecordField::string()), (Field::Data, RecordField::bytes()), @@ -175,7 +175,7 @@ fn reverse_read_file_with_various_buffer_sizes(c: &mut Criterion) { // Create a db instance for prefilling let mut db = DB::configure() .data_dir(&data_dir) - .fields(&vec![ + .fields(vec![ (Field::Id, RecordField::int()), (Field::Name, RecordField::string()), (Field::Data, RecordField::bytes()), diff --git a/log_db/src/lib.rs b/log_db/src/lib.rs index 6787cf1..9c25dd8 100644 --- a/log_db/src/lib.rs +++ b/log_db/src/lib.rs @@ -21,19 +21,19 @@ use std::os::unix::fs::MetadataExt; use std::path::{Path, PathBuf}; use std::thread; -pub struct ConfigBuilder<'a, Field: Eq + Clone + Debug> { +pub struct ConfigBuilder<Field: Eq + Clone + Debug> { data_dir: Option<String>, segment_size: Option<usize>, memtable_capacity: Option<usize>, - fields: Option<&'a Vec<(Field, RecordField)>>, + fields: Option<Vec<(Field, RecordField)>>, primary_key: Option<Field>, secondary_keys: Option<Vec<Field>>, memtable_evict_policy: Option<MemtableEvictPolicy>, write_durability: Option<WriteDurability>, } -impl<'a, Field: Eq + Clone + Debug> ConfigBuilder<'a, Field> { - pub fn new() -> ConfigBuilder<'a, Field> { +impl<'a, Field: Eq + Clone + Debug> ConfigBuilder<Field> { + pub fn new() -> ConfigBuilder<Field> { ConfigBuilder::<Field> { data_dir: None, segment_size: None, @@ -68,8 +68,8 @@ impl<'a, Field: Eq + Clone + Debug> ConfigBuilder<'a, Field> { } /// The field schema of the database. - pub fn fields(&mut self, fields: &'a Vec<(Field, RecordField)>) -> &mut Self { - self.fields = Some(fields); + pub fn fields(&mut self, fields: Vec<(Field, RecordField)>) -> &mut Self { + self.fields = Some(fields.clone()); self } @@ -114,6 +114,7 @@ impl<'a, Field: Eq + Clone + Debug> ConfigBuilder<'a, Field> { memtable_capacity: self.memtable_capacity.unwrap_or(1_000_000), fields: self .fields + .as_ref() .ok_or(io::Error::new( io::ErrorKind::InvalidInput, "Required config value \"fields\" is not set", @@ -161,7 +162,7 @@ pub struct DB<Field: Eq + Clone + Debug> { impl<Field: Eq + Clone + Debug> DB<Field> { /// Create a new database configuration builder. - pub fn configure() -> ConfigBuilder<'static, Field> { + pub fn configure() -> ConfigBuilder<Field> { ConfigBuilder::new() } diff --git a/log_db/tests/integration.rs b/log_db/tests/integration.rs index a2453b2..76ed853 100644 --- a/log_db/tests/integration.rs +++ b/log_db/tests/integration.rs @@ -38,7 +38,7 @@ fn test_initialize() { let data_dir = tmp_dir(); let _db = DB::configure() .data_dir(&data_dir) - .fields(&vec![ + .fields(vec![ (Field::Id, RecordField::int()), (Field::Name, RecordField::string()), (Field::Data, RecordField::bytes()), @@ -53,7 +53,7 @@ fn test_upsert_and_get_with_primary_memtable() { let data_dir = tmp_dir(); let mut db = DB::configure() .data_dir(&data_dir) - .fields(&vec![ + .fields(vec![ (Field::Id, RecordField::int()), (Field::Name, RecordField::string()), (Field::Data, RecordField::bytes()), @@ -86,7 +86,7 @@ fn test_upsert_and_get_without_memtable() { let mut db = DB::configure() .data_dir(&data_dir) .memtable_capacity(0) - .fields(&vec![ + .fields(vec![ (Field::Id, RecordField::int()), (Field::Name, RecordField::string().nullable()), (Field::Data, RecordField::bytes()), @@ -164,7 +164,7 @@ fn test_upsert_fails_on_null_in_non_nullable_field() { let data_dir = tmp_dir(); let mut db = DB::configure() .data_dir(&data_dir) - .fields(&vec![(Field::Id, RecordField::int())]) + .fields(vec![(Field::Id, RecordField::int())]) .primary_key(Field::Id) .initialize() .expect("Failed to initialize DB instance"); @@ -181,7 +181,7 @@ fn test_upsert_fails_on_invalid_number_of_values() { let data_dir = tmp_dir(); let mut db = DB::configure() .data_dir(&data_dir) - .fields(&vec![ + .fields(vec![ (Field::Id, RecordField::int()), (Field::Name, RecordField::string()), (Field::Data, RecordField::bytes()), @@ -205,7 +205,7 @@ fn test_upsert_fails_on_invalid_value_type() { let data_dir = tmp_dir(); let mut db = DB::configure() .data_dir(&data_dir) - .fields(&vec![ + .fields(vec![ (Field::Id, RecordField::int()), (Field::Name, RecordField::string()), (Field::Data, RecordField::bytes()), @@ -229,7 +229,7 @@ fn test_upsert_and_get_from_secondary_memtable() { let data_dir = tmp_dir(); let mut db = DB::configure() .data_dir(&data_dir) - .fields(&vec![ + .fields(vec![ (Field::Id, RecordField::int()), (Field::Name, RecordField::string()), (Field::Data, RecordField::bytes()), @@ -291,7 +291,7 @@ fn test_initialize_and_read_from_primary_memtable_fixture_db2() { let mut db = DB::configure() .data_dir(&data_dir) - .fields(&vec![ + .fields(vec![ (Field::Id, RecordField::int()), (Field::Name, RecordField::string()), (Field::Data, RecordField::bytes()), @@ -326,7 +326,7 @@ fn test_initialize_without_memtables_fixture_db3() { let mut db = DB::configure() .data_dir(&data_dir) - .fields(&vec![ + .fields(vec![ (Field::Id, RecordField::int()), (Field::Name, RecordField::string()), (Field::Data, RecordField::bytes()), @@ -357,7 +357,7 @@ fn test_multiple_writing_threads() { threads.push(thread::spawn(move || { let mut db = DB::configure() .data_dir(&data_dir) - .fields(&vec![(Field::Id, RecordField::int())]) + .fields(vec![(Field::Id, RecordField::int())]) .primary_key(Field::Id) .initialize() .expect("Failed to initialize DB instance"); @@ -376,7 +376,7 @@ fn test_multiple_writing_threads() { // Read the records let mut db = DB::configure() .data_dir(&data_dir) - .fields(&vec![(Field::Id, RecordField::int())]) + .fields(vec![(Field::Id, RecordField::int())]) .primary_key(Field::Id) .initialize() .expect("Failed to initialize DB instance"); @@ -406,7 +406,7 @@ fn test_one_writer_and_multiple_reading_threads() { threads.push(thread::spawn(move || { let mut db = DB::configure() .data_dir(&data_dir) - .fields(&vec![(Field::Id, RecordField::int())]) + .fields(vec![(Field::Id, RecordField::int())]) .primary_key(Field::Id) .initialize() .expect("Failed to initialize DB instance"); @@ -437,7 +437,7 @@ fn test_one_writer_and_multiple_reading_threads() { threads.push(thread::spawn(move || { let mut db = DB::configure() .data_dir(&data_dir) - .fields(&vec![(Field::Id, RecordField::int())]) + .fields(vec![(Field::Id, RecordField::int())]) .primary_key(Field::Id) .initialize() .expect("Failed to initialize DB instance"); @@ -462,7 +462,7 @@ fn test_literal_escape_is_escaped() { let mut db = DB::configure() .data_dir(&data_dir) .memtable_capacity(0) // disable memtables - .fields(&vec![ + .fields(vec![ (Field::Id, RecordField::int()), (Field::Data, RecordField::bytes()), ]) @@ -505,7 +505,7 @@ fn test_log_is_rotated_when_capacity_reached() { .data_dir(&data_dir) .memtable_capacity(0) // disable memtables .segment_size(10 * record_len) // small log segment size - .fields(&vec![ + .fields(vec![ (Field::Id, RecordField::int()), (Field::Data, RecordField::bytes()), ]) |
