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);
 }