]> git.mikk.net Git - mtbl-rs/commitdiff
writer: write in-progress block
authorChris Mikkelson <cmikk@fsi.io>
Mon, 5 Aug 2024 06:02:28 +0000 (00:02 -0600)
committerChris Mikkelson <cmikk@fsi.io>
Mon, 5 Aug 2024 06:03:51 +0000 (00:03 -0600)
src/writer/block_builder.rs
src/writer/mod.rs

index 8efad59d8092b116f8845e2d1837696398074c32..3541fec5a98ff431a5290f43a3e7d8f21a6076c0 100644 (file)
@@ -4,7 +4,7 @@ pub struct BlockBuilder {
     prev_key: Vec<u8>,
     data: Vec<u8>,
     restarts: Vec<usize>,
-    count: usize,
+    pub(crate) count: usize,
     pub(crate) restart_interval: usize,
     finished: bool,
 }
@@ -48,10 +48,6 @@ impl BlockBuilder {
             .zip(key.iter())
             .take_while(|(a, b)| a == b)
             .count();
-        println!(
-            "prev: {:?}\n key: {:?}\n  shared: {}\n",
-            self.prev_key, key, key_shared
-        );
         let key_unshared = key.len() - key_shared;
         self.data.reserve(3 * 5 + key_unshared + val.len());
         varint_append(&mut self.data, key_shared);
index 6068412d1bed7e5510262e3e0b4fb9a486da1747..6d96bd1f8cdf0f81fb2eb7c9e04169a4f709ceef 100644 (file)
@@ -157,6 +157,9 @@ impl<W: std::io::Write> Writer<W> {
 
     // private function, called by Drop when writer goes out of scope.
     fn finish(&mut self) -> Result<()> {
+        if self.block.count > 0 {
+            self.write_block()?;
+        }
         let b = self.index.as_slice();
         self.meta.index_block_offset = self.written;
         self.meta.bytes_index_block = b.len();