350: Fix mdb val size error r=Kerollmops a=ManyTheFish

Related to [#1677](https://github.com/meilisearch/MeiliSearch/issues/1677)

Co-authored-by: many <maxime@meilisearch.com>
This commit is contained in:
bors[bot] 2021-09-08 13:32:15 +00:00 committed by GitHub
commit 86c3b0c8c2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 8 deletions

View File

@ -67,14 +67,17 @@ pub fn extract_docid_word_positions<R: io::Read>(
for (index, token) in tokens { for (index, token) in tokens {
let token = token.text().trim(); let token = token.text().trim();
key_buffer.truncate(mem::size_of::<u32>()); if !token.is_empty() {
key_buffer.extend_from_slice(token.as_bytes()); key_buffer.truncate(mem::size_of::<u32>());
key_buffer.extend_from_slice(token.as_bytes());
let position: u32 = index let position: u32 = index
.try_into() .try_into()
.map_err(|_| SerializationError::InvalidNumberSerialization)?; .map_err(|_| SerializationError::InvalidNumberSerialization)?;
let position = field_id as u32 * ONE_ATTRIBUTE + position; let position = field_id as u32 * ONE_ATTRIBUTE + position;
docid_word_positions_sorter.insert(&key_buffer, &position.to_ne_bytes())?; docid_word_positions_sorter
.insert(&key_buffer, &position.to_ne_bytes())?;
}
} }
} }
} }

View File

@ -17,7 +17,7 @@ pub use merge_functions::{
}; };
pub fn valid_lmdb_key(key: impl AsRef<[u8]>) -> bool { pub fn valid_lmdb_key(key: impl AsRef<[u8]>) -> bool {
key.as_ref().len() <= 511 key.as_ref().len() <= 511 && !key.as_ref().is_empty()
} }
/// Divides one slice into two at an index, returns `None` if mid is out of bounds. /// Divides one slice into two at an index, returns `None` if mid is out of bounds.