Mercurial > lbo > hg > leveldb-rs
changeset 580:cbe7574ed46b
Merge pull request #17 from Sword-Smith/master
Allow iteration over DB when key is empty byte slice
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Sun, 28 Aug 2022 11:30:29 -0700 |
parents | 4276ae011066 (current diff) e5fe33adb1f3 (diff) |
children | 4f825f33a455 |
files | |
diffstat | 2 files changed, 11 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/db_iter.rs Sat Aug 20 09:41:39 2022 +0200 +++ b/src/db_iter.rs Sun Aug 28 11:30:29 2022 -0700 @@ -289,6 +289,7 @@ use super::*; use crate::db_impl::testutil::*; use crate::db_impl::DB; + use crate::options; use crate::test_util::LdbIteratorIter; use crate::types::{current_key_val, Direction}; @@ -485,4 +486,13 @@ } } } + + #[test] + fn db_iter_allow_empty_key() { + let opt = options::for_test(); + let mut db = DB::open("db", opt).unwrap(); + assert!(db.new_iter().unwrap().next().is_none()); + db.put(&[], &[]).unwrap(); + assert!(db.new_iter().unwrap().next().is_some()); + } }
--- a/src/key_types.rs Sat Aug 20 09:41:39 2022 +0200 +++ b/src/key_types.rs Sun Aug 28 11:30:29 2022 -0700 @@ -209,7 +209,7 @@ /// truncate_to_userkey performs an in-place conversion from InternalKey to UserKey format. pub fn truncate_to_userkey(ikey: &mut Vec<u8>) { let len = ikey.len(); - assert!(len > 8); + assert!(len >= 8); ikey.truncate(len - 8); }