Pekka Enberg
7a259957ac
Merge 'properly set last_checksum after recovering wal' from Pere Diaz Bou
...
We store `last_checksum` to do cumulative checksumming. After reading
wal for recovery, we didn't set last checksum properly in case there
were no frames so this cause us to not initialize last_checksum
properly.
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com >
Closes #2030
2025-07-10 13:54:15 +03:00
Pere Diaz Bou
9258d33d8b
properly set last_checksum after recovering wal
...
We store `last_checksum` to do cumulative checksumming. After reading
wal for recovery, we didn't set last checksum properly in case there
were no frames so this cause us to not initialize last_checksum
properly.
2025-07-10 12:15:00 +02:00
Jussi Saurio
0eeabbb748
Merge 'btree/chore: remove unnecessary parameters to .cell_get()' from Jussi Saurio
...
we were providing the same damn arguments to `.cell_get()` and
`.cell_get_raw_region()` over and OVER and **OVER** and `O V E R`
Reviewed-by: Preston Thorpe (@PThorpe92)
Closes #2021
2025-07-10 12:22:37 +03:00
Jussi Saurio
c2b699c356
btree: make cell field names consistent
2025-07-09 23:43:03 +03:00
Jussi Saurio
641df7d7e9
improve my mental health by finally refactoring .cell_get()
2025-07-09 19:15:05 +03:00
meteorgan
0001348158
Minor refactoring of btree
2025-07-09 22:01:54 +08:00
Jussi Saurio
c13b2d5d90
sqlite3_ondisk: generalize left-child-pointer reading function to both index/table btrees
2025-07-09 11:07:42 +03:00
Pere Diaz Bou
f7465f665d
add checkpoint lock to wal
2025-07-08 17:53:04 +02:00
meteorgan
99e0cf0603
add a constant MINIMUM_CELL_SIZE
2025-07-08 22:57:20 +08:00
meteorgan
04575456a9
fix Minimum cell size must not be less than 4
2025-07-08 22:57:20 +08:00
pedrocarlo
b85687658d
change instrumentation level to INFO
2025-07-07 11:53:45 -03:00
pedrocarlo
5559c45011
more instrumentation + write counter should decrement if pwrite fails
2025-07-07 11:50:21 -03:00
pedrocarlo
9632ab0a41
rollback transaction when we fail in step
2025-07-07 11:50:21 -03:00
pedrocarlo
897426a662
add error tracing to relevant functions + rollback transaction in step_end_write_txn + make move_to_root return result
2025-07-07 11:50:21 -03:00
pedrocarlo
d82b526a5c
fix infinite loop with write counter
2025-07-07 11:50:21 -03:00
KaguraMilet
aca08238d8
fix buffer pool is not thread safe problem
2025-07-01 16:06:55 +08:00
Pere Diaz Bou
081f09ce20
fix read wal max frame
2025-06-30 10:16:44 +02:00
Pere Diaz Bou
486c4b69fb
WAL record db_size frame on commit last frame
...
`db_size` is `>0` in case of last frame written of a transaction. This
is necessary as we need to know -- while recovering wal contents -- that
we have read a transaction fully instead of treating every frame as its
own transaction.
2025-06-27 16:21:48 +02:00
pedrocarlo
bac5e4b563
refactor File and Database Storage to remove Arc<Connection> and return Arc<Connection> for caller to wait for completion
2025-06-26 22:17:28 -03:00
pedrocarlo
64d9193e7b
refactor Completion to have a type field and lift common is_complete property
2025-06-26 22:17:27 -03:00
Jussi Saurio
480f0a04b5
make clippy happy about mutating database_size immediately after default construction
2025-06-24 14:41:50 -03:00
Jussi Saurio
f21cde9501
post-rebase fixes
2025-06-24 14:41:50 -03:00
Jussi Saurio
133d498724
Implement a header_accessor module so that DatabaseHeader structs arent initialized on every access
2025-06-24 14:41:50 -03:00
Jussi Saurio
ba3bfa058d
Delete unused stuff
2025-06-24 14:41:50 -03:00
Diego Reis
f0f9ad4844
core: Get rid of maybe_init_database_file
...
Initialization now only occurs in the first write transaction
2025-06-24 14:41:50 -03:00
Diego Reis
2f33c799e3
core: Set default database_size to 0
2025-06-24 14:41:49 -03:00
Jussi Saurio
cc2e14b11c
Read page 1 from pager always, no separate db_header
2025-06-24 14:41:49 -03:00
Nils Koch
2827b86917
chore: fix clippy warnings
2025-06-23 19:52:13 +01:00
pedrocarlo
8dbf09bb42
betters instrumentation for btree operations
2025-06-11 23:34:32 -03:00
Jussi Saurio
d81f5f67bd
insert spaghetti fixes
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
Zaid Humayun
6e87761a34
Addresses comment https://github.com/tursodatabase/limbo/pull/1600#discussion_r2115842804 by @jussisaurio
...
this commit adds an assert into ptrmap_page_cycle_length
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
meteorgan
a242bac340
Fix: ensure PRAGMA cache_size changes persist only for current session
2025-06-05 16:55:41 +08:00
Jussi Saurio
2087393d22
Merge 'Write database header via normal pager route' from meteorgan
...
Closes : #1613
Closes #1634
2025-06-04 09:39:14 +03:00
Diego Reis
09f978b239
core: Tagging some comments as TODO
2025-06-03 15:09:16 -03:00
meteorgan
f2bf6251cd
write database header via normal pager route
2025-06-03 22:06:08 +08:00
Diego Reis
16c81f471b
core/ondisk: Stop reading WAL file if a frame mismatch salt value with header
...
The salts values in the WAL header are (re)generated in every checkpoint (but in PASSIVE mode), so if we find a frame with mismatch it means it's a leftover from a previous checkpoint.
2025-06-02 23:14:51 -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
Pekka Enberg
59d28eac93
core: Switch Completion "is_completed" to use Cell
...
Suggested by Jussi
2025-05-27 14:05:07 +03:00
Pekka Enberg
3250560eb8
sqlite3: Add libsql_wal_get_frame() API
2025-05-27 13:47:40 +03:00
Pekka Enberg
05df548b10
core/io: Add wait_for_completion() to I/O dispatcher
2025-05-27 13:47:40 +03:00
Pekka Enberg
eca9a5b703
core/io: Switch to Arc<Completion>
2025-05-27 11:28:49 +03:00
Pekka Enberg
21535018aa
core: Don't pass page to begin_read_wal_frame()
...
Make `begin_read_wal_frame()` a bit more generic by not requiring a page
to be passed.
2025-05-27 10:02:36 +03:00
Jussi Saurio
b5ac095716
Fix off-by-one error in max_frame after WAL load
2025-05-25 19:34:51 +03:00
Jussi Saurio
64ef3f1343
simplify condition
2025-05-25 10:22:46 +03:00
Jussi Saurio
fc45e0ec0d
Reconstruct WAL frame cache when WAL is opened
...
Currently we are simply unable to read any WAL frames from disk
once a fresh process w/ Limbo is opened, since we never try to read
anything from disk unless we already have it in our in-memory
frame cache.
This commit implements a crude way of reading entire WAL into memory
as a single buffer and reconstructing the frame cache.
2025-05-24 18:29:44 +03:00
Diego Reis
2f8042da22
core/pragma: Add support for update user_version
...
It also changes the type from u32 to i32 since
sqlite supports negative values
2025-05-22 20:38:27 -03:00
Pekka Enberg
e3f71259d8
Rename OwnedValue -> Value
...
We have not had enough merge conflicts for a while so let's do a
tree-wide rename.
2025-05-15 09:59:46 +03:00
Jussi Saurio
6096cfb3d8
Merge 'Add PRAGMA schema_version' from Anton Harniakou
...
This PR adds `PRAGMA schema_version` to get the value of the schema-
version integer at offset 40 in the database header.
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com >
Closes #1427
2025-05-01 10:50:02 +03:00