From 7c987710689d1f84785ddc8823c6dec20b1d29e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Renault?= Date: Fri, 7 Dec 2018 15:31:58 +0100 Subject: [PATCH] fix: Change the way the iterator upper bound is computed --- src/database/deserializer.rs | 2 +- src/database/document_key.rs | 4 ++++ src/database/schema.rs | 6 +++++- 3 files changed, 10 insertions(+), 2 deletions(-) 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 }