Pere Diaz Bou
46f5609fce
Merge 'Append WAL frames one by one' from Pere Diaz Bou
...
Let's make sure we don't end up in a weird situation by appending frames
one by one and we can later think of optimizations.
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com >
Closes #2034
2025-07-24 16:44:51 +02:00
Pere Diaz Bou
14de7c55af
set connection state to None in vdbe rollback
2025-07-24 15:29:21 +02:00
Pere Diaz Bou
5f8e386b48
reset internal states on rollback
2025-07-24 15:29:06 +02:00
Jussi Saurio
37955e9a04
Pager/WAL: fix not clearing stale page cache
...
SQLite behavior is: if another connection has modified the DB when a
read tx starts, it must clear its page cache due to the potentiality
of there being stale versions of pages in it.
In the future, we may want to do either:
1. a more granular invalidation logic for per-conn cache, or
2. a shared versioned page cache
But right now we must follow SQLite to make our current behavior not
corrupt data
2025-07-24 16:23:12 +03:00
Nikita Sivukhin
4a80306705
fix wal insert frame raw API
...
- we need to properly mark pages as dirty after insertion
2025-07-24 11:49:39 +04:00
Nikita Sivukhin
3c0af3e389
small adjustments
2025-07-23 11:31:00 +04:00
Nikita Sivukhin
bf2bfbe978
fix clippy
2025-07-23 11:31:00 +04:00
Nikita Sivukhin
16763e1500
implement raw WAL write api
2025-07-23 11:30:59 +04:00
Nikita Sivukhin
bc09ea6e98
make end_write_txn/end_read_txn function non-failing
2025-07-23 11:30:29 +04:00
Nikita Sivukhin
b34d081d35
cargo fmt
2025-07-22 16:23:04 +04:00
Nikita Sivukhin
d617d1d21e
fix raw read frame WAL API
2025-07-22 16:21:04 +04:00
Pere Diaz Bou
1933815233
wal: write txn fail in case max_frame change midway
...
A write txn can only start if the current snapshot held by writer is
consistent with the one in shared state
2025-07-21 13:08:56 +02:00
Jussi Saurio
010fb1c12a
fix/pager/cacheflush: cacheflush shouldn't commit
2025-07-20 21:18:45 +03:00
Jussi Saurio
347a9152a6
Merge 'Replace verbose IO Completion methods with helpers' from Preston Thorpe
...
one of the last remnants of some original verbosity
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com >
Closes #2156
2025-07-18 10:52:17 +03:00
PThorpe92
dced94aec6
Replace verbose completions with new helpers
2025-07-17 23:47:21 -04:00
pedrocarlo
c15f1e02d3
make most instrumentation levels to be Debug or Trace instead. Span creation in debug mode is very slow and impacts our ability to run the Simulator fast enough
2025-07-17 16:48:24 -03:00
pedrocarlo
dc5f73887e
refactor to require Arc<Completion> in file traits so that we can delay IO calls correctly
2025-07-17 12:24:43 -03:00
Diego Reis
0e9771ac07
refactor: Change redundant "Status" enums to IOResult
...
Let's unify the semantics of "something done" or yields I/O into a
single type
2025-07-15 20:56:18 -03:00
Pere Diaz Bou
340391538a
io: change comment for assert
2025-07-14 10:36:06 +02:00
Pere Diaz Bou
88ff218810
io: assert small I/O
...
Let's assert **for now** that we do not read/write less bytes than
expected. This should be fixed to retrigger several reads/writes if we
couldn't read/write enough but for now let's assert.
2025-07-14 10:19:41 +02: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
Pere Diaz Bou
f7465f665d
add checkpoint lock to wal
2025-07-08 17:53:04 +02:00
pedrocarlo
d8ad4a27f8
only finish appending frames when we are done in cacheflush
2025-07-07 11:53:45 -03:00
pedrocarlo
b85687658d
change instrumentation level to INFO
2025-07-07 11:53:45 -03:00
pedrocarlo
46f59e4f0f
add more instrumentation + add faults to shrunk plan
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
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
KaguraMilet
aca08238d8
fix buffer pool is not thread safe problem
2025-07-01 16:06:55 +08: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
Pere Diaz Bou
34a6d236ab
fix comp
2025-06-25 14:01:53 +02:00
Pere Diaz Bou
96c30be488
more clippy
2025-06-25 14:01:53 +02:00
Pere Diaz Bou
a3ad138df8
checkpoint clear dirty page if it was on cache
2025-06-25 14:01:53 +02:00
Pere Diaz Bou
22f9cd695d
commit_txn track rollback case
2025-06-25 14:00:57 +02:00
Pere Diaz Bou
8517cea530
add finish append frames log
2025-06-25 14:00:57 +02:00
Pere Diaz Bou
bdd2010df3
autocommit rollback
2025-06-25 14:00:57 +02:00
Jussi Saurio
cc2e14b11c
Read page 1 from pager always, no separate db_header
2025-06-24 14:41:49 -03:00
Pere Diaz Bou
10d02525d6
introduce concurrent write test
...
The idea is quite simple: write with 4 concurrent writers and once all
are finsihed, check the count of rows written is correct.
2025-06-18 17:40:53 +02:00
pedrocarlo
20115c1e74
return parse error when calling unimplemented pragma checkpoint modes
2025-06-17 11:42:20 -03:00
PThorpe92
33b52bfb84
Replace refcel in wal sync, add counter timeout to conn close shutdown
2025-06-13 11:12:42 +03:00
PThorpe92
eecf6ae6e6
Wait till we write the page to increment current page in wal checkpoint
2025-06-13 11:11:30 +03:00
pedrocarlo
8dbf09bb42
betters instrumentation for btree operations
2025-06-11 23:34:32 -03:00
Pere Diaz Bou
914c1a4407
fix race condition with read lock in between unlock
2025-06-06 12:16:41 +02:00
Pere Diaz Bou
e67089b377
fix false double acquire on write lock
2025-06-06 12:16:41 +02:00
Diego Reis
09f978b239
core: Tagging some comments as TODO
2025-06-03 15:09:16 -03:00
Diego Reis
cf038b045d
core/wal: Only reset the WAL if the file is truncated
2025-06-02 23:16:30 -03:00
Diego Reis
ec4eb52734
core/wal: Refactor open_shared for readability
2025-06-02 19:21:13 -03: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