limbo/core/storage
Pekka Enberg b4e8afa3c7 Merge 'Implement SQLite balancing algorithm' from Pere Diaz Bou
Beep boop.
What happened you ask? I removed the dumb balancing algorithm I
implemented in favor of SQLite's implementation based on B*Tree[1] where
a page is 2/3 full instead of 1/2. It also tries to balance a page by
taking a maximum 3 pages and distributing cells evenly between them.
I've made some changes that are somewhat related:
* Moved most operations on pages out of BTreeCursor because those
operations are based on a page, not on a cursor, and it makes it easier
to test.
* Fixed `write_u16` and `read_u16` cases that didn't need a implicit
offset calculation. Added: `write_u16_no_offset` and
`read_u16_no_offset` to counter this.
* Added some tests with fuzz testing too.
* Fixed some important actions like: `compute_free_space`,
`defragment_page` and `drop_cell`.
[1] https://dl.acm.org/doi/10.1145/356770.356776

Closes #968
2025-02-28 19:10:52 +02:00
..
btree.rs fix free_cell_space extend content area 2025-02-17 11:50:15 +01:00
buffer_pool.rs core: Move buffer_pool.rs to storage module 2024-08-01 11:53:14 +03:00
database.rs Merge 'Remove unnecessary reference counting from completion I/O callbacks' from Preston Thorpe 2025-02-10 12:11:30 +02:00
mod.rs Add clippy CI, fix or ignore warnings where appropriate 2024-12-29 10:25:41 -05:00
page_cache.rs rm log, switch all to tracing 2025-02-11 09:03:36 -04:00
pager.rs balance sibling pages 2025-02-15 15:37:13 +01:00
sqlite3_ondisk.rs Merge 'Implement SQLite balancing algorithm' from Pere Diaz Bou 2025-02-28 19:10:52 +02:00
wal.rs rm log, switch all to tracing 2025-02-11 09:03:36 -04:00