Mercurial > lbo > hg > leveldb-rs
changeset 352:742cfffd2892
db_impl: Implement delete() and add test
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Thu, 05 Oct 2017 19:45:55 +0200 |
parents | b46303bd0520 |
children | c8dade1cb8e1 |
files | src/db_impl.rs |
diffstat | 1 files changed, 26 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/db_impl.rs Thu Oct 05 19:45:42 2017 +0200 +++ b/src/db_impl.rs Thu Oct 05 19:45:55 2017 +0200 @@ -353,6 +353,13 @@ self.write(wb, false) } + /// delete deletes a single entry. + fn delete(&mut self, k: &[u8], sync: bool) -> Result<()> { + let mut wb = WriteBatch::new(); + wb.delete(k); + self.write(wb, sync) + } + /// write writes an entire WriteBatch. sync determines whether the write should be flushed to /// disk. fn write(&mut self, batch: WriteBatch, sync: bool) -> Result<()> { @@ -1237,6 +1244,25 @@ } #[test] + fn test_db_impl_delete() { + let mut db = build_db(); + + db.put(b"xyy", b"123").unwrap(); + db.put(b"xyz", b"123").unwrap(); + + assert!(db.get(b"xyy").is_some()); + assert!(db.get(b"gaa").is_some()); + + // Delete one memtable entry and one table entry. + db.delete(b"xyy", true).unwrap(); + db.delete(b"gaa", true).unwrap(); + + assert!(db.get(b"xyy").is_none()); + assert!(db.get(b"gaa").is_none()); + assert!(db.get(b"xyz").is_some()); + } + + #[test] fn test_db_impl_compact_single_file() { let mut db = build_db(); set_file_to_compact(&mut db, 4);