Skip to content

Commit 9283482

Browse files
authored
Merge pull request #66 from meilisearch/fix-writer-clear
Add a test to check if Writer::clear works
2 parents 75ac09e + 54fa7ae commit 9283482

File tree

2 files changed

+33
-3
lines changed

2 files changed

+33
-3
lines changed

src/tests/writer.rs

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,39 @@
1+
use heed::EnvOpenOptions;
12
use rand::seq::SliceRandom;
23
use rand::Rng;
34

45
use super::{create_database, rng};
5-
use crate::distance::Euclidean;
6-
use crate::Writer;
6+
use crate::distance::{DotProduct, Euclidean};
7+
use crate::{Database, Reader, Writer};
8+
9+
#[test]
10+
fn clear_small_database() {
11+
let _ = rayon::ThreadPoolBuilder::new().num_threads(1).build_global();
12+
13+
let dir = tempfile::tempdir().unwrap();
14+
let env = EnvOpenOptions::new().map_size(200 * 1024 * 1024).open(dir.path()).unwrap();
15+
16+
let mut wtxn = env.write_txn().unwrap();
17+
let database: Database<DotProduct> = env.create_database(&mut wtxn, None).unwrap();
18+
19+
let zero_writer = Writer::new(database, 0, 3);
20+
zero_writer.add_item(&mut wtxn, 0, &[0.0, 1.0, 2.0]).unwrap();
21+
zero_writer.clear(&mut wtxn).unwrap();
22+
zero_writer.build(&mut wtxn, &mut rng(), None).unwrap();
23+
24+
let one_writer = Writer::new(database, 1, 3);
25+
one_writer.add_item(&mut wtxn, 0, &[1.0, 2.0, 3.0]).unwrap();
26+
one_writer.build(&mut wtxn, &mut rng(), None).unwrap();
27+
wtxn.commit().unwrap();
28+
29+
let mut wtxn = env.write_txn().unwrap();
30+
let zero_writer = Writer::new(database, 0, 3);
31+
zero_writer.clear(&mut wtxn).unwrap();
32+
33+
let one_reader = Reader::open(&wtxn, 1, database).unwrap();
34+
assert_eq!(one_reader.item_vector(&wtxn, 0).unwrap().unwrap(), vec![1.0, 2.0, 3.0]);
35+
wtxn.commit().unwrap();
36+
}
737

838
#[test]
939
fn use_u32_max_minus_one_for_a_vec() {

src/writer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ impl<D: Distance> Writer<D> {
205205
.database
206206
.remap_key_type::<PrefixCodec>()
207207
.prefix_iter_mut(wtxn, &Prefix::all(self.index))?
208-
.remap_key_type::<DecodeIgnore>();
208+
.remap_types::<DecodeIgnore, DecodeIgnore>();
209209

210210
while let Some((_id, _node)) = cursor.next().transpose()? {
211211
// safety: we don't have any reference to the database

0 commit comments

Comments
 (0)