690: Fix soft deleted bug settings r=ManyTheFish a=Kerollmops



Co-authored-by: Kerollmops <clement@meilisearch.com>
This commit is contained in:
bors[bot] 2022-11-08 13:45:10 +00:00 committed by GitHub
commit 24a298a83c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 2 deletions

View File

@ -578,9 +578,8 @@ impl<'a, 'i> Transform<'a, 'i> {
); );
let mut obkv_buffer = Vec::new(); let mut obkv_buffer = Vec::new();
for result in self.index.documents.iter(wtxn)? { for result in self.index.all_documents(wtxn)? {
let (docid, obkv) = result?; let (docid, obkv) = result?;
let docid = docid.get();
obkv_buffer.clear(); obkv_buffer.clear();
let mut obkv_writer = obkv::KvWriter::<_, FieldId>::new(&mut obkv_buffer); let mut obkv_writer = obkv::KvWriter::<_, FieldId>::new(&mut obkv_buffer);

View File

@ -719,6 +719,7 @@ mod tests {
use super::*; use super::*;
use crate::error::Error; use crate::error::Error;
use crate::index::tests::TempIndex; use crate::index::tests::TempIndex;
use crate::update::DeleteDocuments;
use crate::{Criterion, Filter, SearchResult}; use crate::{Criterion, Filter, SearchResult};
#[test] #[test]
@ -1494,4 +1495,34 @@ mod tests {
}) })
.unwrap(); .unwrap();
} }
#[test]
fn settings_must_ignore_soft_deleted() {
use serde_json::json;
let index = TempIndex::new();
let mut docs = vec![];
for i in 0..10 {
docs.push(json!({ "id": i, "title": format!("{:x}", i) }));
}
index.add_documents(documents! { docs }).unwrap();
let mut wtxn = index.write_txn().unwrap();
let mut builder = DeleteDocuments::new(&mut wtxn, &index).unwrap();
(0..5).for_each(|id| drop(builder.delete_external_id(&id.to_string())));
builder.execute().unwrap();
index
.update_settings_using_wtxn(&mut wtxn, |settings| {
settings.set_searchable_fields(vec!["id".to_string()]);
})
.unwrap();
wtxn.commit().unwrap();
let rtxn = index.write_txn().unwrap();
let docs: StdResult<Vec<_>, _> = index.all_documents(&rtxn).unwrap().collect();
let docs = docs.unwrap();
assert_eq!(docs.len(), 5);
}
} }