// Authors: Robert Lopez
use super::{wal::DataFileLog, DataFile};
use crate::error::Error;
impl DataFile {
pub async fn free(&mut self, id: &str) -> Result<usize, Error> {
self.wal_checkpoint_handler().await?;
self.wal.log(&DataFileLog::Free(id.to_string())).await?;
if let Some(mut data_block) = self.data_blocks.remove(id) {
let size = data_block.size(&self.options_store);
self.used_bytes -= size;
self.free_bytes += size;
self.free_chunk_offsets
.append(&mut data_block.chunk_offsets);
return Ok(size);
}
Ok(0)
}
}