diff --git a/src/BlobManager.zig b/src/BlobManager.zig index 45ba818..4d8c2f7 100644 --- a/src/BlobManager.zig +++ b/src/BlobManager.zig @@ -137,7 +137,7 @@ pub fn open(self: *Self, id: i64) !Handle { }; } -fn delete(self: *Self, tmp_arena: *ArenaAllocator, id: i64) !void { +pub fn delete(self: *Self, tmp_arena: *ArenaAllocator, id: i64) !void { const stmt = try self.delete_stmt.acquire(tmp_arena, self); defer self.delete_stmt.release(); diff --git a/src/row_group/Creator.zig b/src/row_group/Creator.zig index 957a638..0d32ed0 100644 --- a/src/row_group/Creator.zig +++ b/src/row_group/Creator.zig @@ -295,7 +295,15 @@ fn merge( ); } - // TODO delete the segments from the source row group + // Delete the segments from the source row group since they are no longer being used + if (self.src_row_group_cursor.row_group.record_count > 0) { + const src_rowid_segment_id = self.src_row_group_cursor.row_group.rowid_segment_id; + try self.blob_manager.delete(tmp_arena, src_rowid_segment_id); + const src_col_segemnt_ids = self.src_row_group_cursor.row_group.column_segment_ids; + for (src_col_segemnt_ids) |seg_id| { + try self.blob_manager.delete(tmp_arena, seg_id); + } + } // Delete the source row group entry try self.row_group_index.deleteEntry(