Pere Diaz Bou
d3c646378a
Cell coverage checker
...
We check cells and freeblocks do not overlap and the fragmentation is
correct.
2025-06-11 16:50:30 +02:00
Pere Diaz Bou
9383ba207d
introduce integrity_check pragma
2025-06-11 11:14:29 +02:00
Jussi Saurio
f8df870fb7
Fix implementation of InteriorNodeReplacement(interior index cell being deleted)
2025-06-10 14:16:26 +03:00
Jussi Saurio
6d2ca58235
get_prev_record() small fixes
2025-06-10 14:16:26 +03:00
Jussi Saurio
9caa8334be
add FIXME about balance after interior node replacement
2025-06-10 14:16:26 +03:00
Jussi Saurio
10caca25c9
advance in balance_non_root() if -1 idx
2025-06-10 14:16:26 +03:00
Jussi Saurio
d827eeade0
For now always calculate post-balance seek key
2025-06-10 14:16:26 +03:00
Jussi Saurio
58172641fd
Use SeekOP:LT after post-deletebalancing to end up pointing to the left of the deleted row
2025-06-10 14:16:26 +03:00
Jussi Saurio
e1bc268a65
fix CREATE TABLE hang
2025-06-10 14:16:26 +03:00
Jussi Saurio
a5aeff9a3d
Fix index insert accidentally double-inserting after balance
2025-06-10 14:16:26 +03:00
Jussi Saurio
04e89c0c4a
actually fix drop table
2025-06-10 14:16:26 +03:00
Jussi Saurio
843eb18daf
simplify cursor.exists() by using seek()
2025-06-10 14:16:26 +03:00
Jussi Saurio
844461d20b
update and delete fixes
2025-06-10 14:16:26 +03:00
Jussi Saurio
d81f5f67bd
insert spaghetti fixes
2025-06-10 14:16:26 +03:00
Jussi Saurio
499296d396
fix drop table again: only stack.advance() in a single place
2025-06-10 14:16:26 +03:00
Jussi Saurio
5c08d259bf
Fix drop table: initialize loaded pages to cell idx 0
2025-06-10 14:16:26 +03:00
Jussi Saurio
e897052650
flatten process_overflow_read() to get rid of borrowmuterror possibility
2025-06-10 14:16:26 +03:00
Jussi Saurio
5f60cce3c7
fix seek_to_last()
2025-06-10 14:16:26 +03:00
Jussi Saurio
0ce18a9146
Fix comment
2025-06-10 14:16:26 +03:00
Jussi Saurio
0b7f5a2a13
Merge MoveTo&Seek states, remove unnecessary seekstate methods, add eq_seen flag to prevent unnecessary next()/prev()
2025-06-10 14:16:26 +03:00
Jussi Saurio
2bac140d73
Remove SeekOp::EQ and encode eq_only in LE&GE - needed for iteration direction aware equality seeks
2025-06-10 14:16:26 +03:00
Jussi Saurio
ae6a943e43
Leave parent pointing at rightmost pointer at the end of balance_root()
2025-06-10 14:16:26 +03:00
Jussi Saurio
cba84b7ce9
Remove premature cast to usize (cell_idx can be negative)
2025-06-10 14:16:26 +03:00
Jussi Saurio
8ad6aadbbd
remove unnecessary SeekingIndexMoveUp state
2025-06-10 14:16:26 +03:00
Jussi Saurio
a3ffc6f4e2
Align prev() implementation with next()
2025-06-10 14:16:26 +03:00
Jussi Saurio
58e1a2f5bc
Remove unnecessary self.prev() from last()
2025-06-10 14:16:26 +03:00
Jussi Saurio
8941c4a537
fmt
2025-06-10 14:16:26 +03:00
Jussi Saurio
6e5f05a257
Remove unnecessary cell_idx move from tablebtree_move_to()
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
0f79b0dd50
fix prev?
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
f83d837131
fix next to not advance if not necessary
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
f261d5b6af
compare on next/prev after seek
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
681df9b1eb
fix get record
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
b46852a366
move setting target key in delete if balance is needed
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
c52d9a52d9
fix count
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
96324834a5
invalidate records on movement
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
77b6896eae
implement lazy record and rowid in cursor
...
This also comments save_context for now
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
b0c64cb4d2
parse record lazily
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
105de7e1d8
seek, next and prev return bool
2025-06-10 14:16:26 +03:00
Zaid Humayun
1f5025541c
addresses comment https://github.com/tursodatabase/limbo/pull/1600#discussion_r2115796655 by @jussisaurio
...
this commit ensures that ptrmap operations return a CursorResult so operation can be suspended & later retried
2025-06-06 23:14:25 +05:30
Zaid Humayun
5827a33517
Beginnings of AUTOVACUUM
...
This commit introduces AUTOVACUUM to Limbo. It introduces the concept of ptrmap pages and also adds some additional instructions that are required to make AUTOVACUUM PRAGMA work
2025-06-06 23:14:22 +05:30
pedrocarlo
9b5f5f6053
do not move_to if we are already inserting in correct place
2025-06-02 02:55:32 -03:00
pedrocarlo
c2942a5819
small fixes
2025-06-01 12:11:03 -03:00
pedrocarlo
39434fd20f
return_io when restoring context
2025-06-01 03:07:16 -03:00
pedrocarlo
2ddbb7eeed
adjust move_to and seek functions to make them truly reentrant + adding return_if_locked_maybe_load in some places so that we read loaded pages
2025-06-01 01:01:35 -03:00
pedrocarlo
d688cfd547
make find_cell and process_overflow_page reentrant
2025-05-31 23:31:59 -03:00
pedrocarlo
dae58be071
make move_to reentrant
2025-05-31 02:56:30 -03:00
pedrocarlo
33480540f1
make cursor seek reentrant
2025-05-30 13:25:46 -03:00
Pere Diaz Bou
da4190a23e
Convert u64 rowid to i64
...
Rowids can be negative, therefore let's swap to i64
2025-05-30 13:07:31 +02:00
Jussi Saurio
dad1e6293b
Btree: fix cursor record state not being updated in insert_into_page()
...
overwrite_cell() requires that the cursor state is pointing to a valid
record, but this was not currently set properly.
2025-05-28 16:54:00 +03:00
Pekka Enberg
eca9a5b703
core/io: Switch to Arc<Completion>
2025-05-27 11:28:49 +03:00