diff --git a/src/database/deserializer.rs b/src/database/deserializer.rs index f8c4fd567..11e65896f 100644 --- a/src/database/deserializer.rs +++ b/src/database/deserializer.rs @@ -43,7 +43,7 @@ impl<'de, 'a, 'b> de::Deserializer<'de> for &'b mut Deserializer<'a> { { let mut options = ReadOptions::new(); let lower = DocumentKey::new(self.document_id); - let upper = DocumentKey::new(self.document_id + 1); + let upper = lower.with_attribute_max(); options.set_iterate_lower_bound(lower.as_ref()); options.set_iterate_upper_bound(upper.as_ref()); diff --git a/src/database/document_key.rs b/src/database/document_key.rs index 35180097e..529bc1b75 100644 --- a/src/database/document_key.rs +++ b/src/database/document_key.rs @@ -38,6 +38,10 @@ impl DocumentKey { DocumentKeyAttr::new(self.document_id(), attr) } + pub fn with_attribute_max(&self) -> DocumentKeyAttr { + DocumentKeyAttr::new(self.document_id(), SchemaAttr::max()) + } + pub fn document_id(&self) -> DocumentId { (&self.0[4..]).read_u64::().unwrap() } diff --git a/src/database/schema.rs b/src/database/schema.rs index 9467ce18c..5e60f183f 100644 --- a/src/database/schema.rs +++ b/src/database/schema.rs @@ -1,9 +1,9 @@ use std::collections::{HashMap, BTreeMap}; use std::io::{Read, Write}; +use std::{fmt, u32}; use std::path::Path; use std::ops::BitOr; use std::fs::File; -use std::fmt; use serde_derive::{Serialize, Deserialize}; use linked_hash_map::LinkedHashMap; @@ -127,6 +127,10 @@ impl SchemaAttr { SchemaAttr(value) } + pub fn max() -> SchemaAttr { + SchemaAttr(u32::MAX) + } + pub fn as_u32(&self) -> u32 { self.0 }