pedrocarlo
fafbdbfa9d
persist files in sim memory io for integrity check
2025-10-11 15:03:22 -03:00
pedrocarlo
b6f94b2fa1
remove dead code in sim
2025-10-09 17:25:04 -03:00
pedrocarlo
6d5443d4f0
add Query::Placeholder
2025-10-07 11:38:47 -03:00
pedrocarlo
4fc7be5042
as we have DROP table now, if we want to generate extensional queries eagerly, without affecting how we document interactions with MVCC, we need to travel forward in time and shadow queries eagerly so we can generate queries correctly. This involves cloning the tables unfortunately which is inneficient but correct
2025-10-07 11:38:47 -03:00
bit-aloo
ff381c1036
clippy'ed
2025-10-02 19:30:57 +05:30
bit-aloo
46fab87634
Replaced manual validation in SimulatorCLI::validate with Clap features:
...
- Added `conflicts_with` for mutually exclusive flags
- Removed redundant default values for bool flags.
- Dropped manual validation checks in favor of Clap's built-in parsing guarantees.
2025-10-02 19:18:38 +05:30
pedrocarlo
d3c2198a75
keep track of each pending query for the transaction and then apply the queries on commit
2025-09-27 23:52:57 -03:00
pedrocarlo
399f35f73c
for each connection keep track of the tables at the start of the
...
transaction as well
2025-09-27 23:52:57 -03:00
pedrocarlo
bbbdd8c1e2
simplify rusqlite execution
2025-09-27 23:52:57 -03:00
pedrocarlo
df420ab815
consolidate SimulatorEnv rollback code
2025-09-27 23:52:57 -03:00
pedrocarlo
026fd9ae9e
add ignore_error flag to interaction so that we fail on errors when executing interactions
2025-09-27 23:52:57 -03:00
pedrocarlo
f2d29ffaaf
make transactions truly concurrent with mvcc
2025-09-27 23:52:57 -03:00
pedrocarlo
4cbf861699
use a different seed for gen_rng
2025-09-25 01:20:35 -03:00
pedrocarlo
44c08c02d1
do not shadow interactions when generating the next plan, only after the interaction is ran
2025-09-23 21:57:06 -03:00
pedrocarlo
69d09bcf8c
modify code to use runtime generation
2025-09-23 21:57:06 -03:00
pedrocarlo
6569d27bdc
compare rows order insensitively for differential testing
2025-09-22 15:33:37 -03:00
pedrocarlo
2cd7c68c35
adjust property generation to not panic by always having some property to select from
2025-09-22 15:24:30 -03:00
pedrocarlo
7d1f23dd3a
better diffing with similar crate
2025-09-22 15:24:30 -03:00
pedrocarlo
05034e1f9d
instead of incrementing interaction counter, just substitue the current state
2025-09-22 15:24:30 -03:00
pedrocarlo
021d5d272a
refactor shadowing code to take into account snapshot isolation
2025-09-20 12:01:07 -03:00
pedrocarlo
0293c32616
disable integrity check and indexes when using mvcc
2025-09-20 11:52:15 -03:00
pedrocarlo
13f36880f8
adjust generation code to use the context from the current connection index instead of the whole database
2025-09-20 11:52:15 -03:00
pedrocarlo
c4843d6a6e
refactor SimulatorEnv to hold committed tables and separate connection tables for snapshot isolation
2025-09-20 11:52:15 -03:00
pedrocarlo
8b05dcba21
add 10 connections to base profiles
2025-09-17 10:49:24 -03:00
pedrocarlo
6039a30222
fix double create failure
2025-09-17 10:49:24 -03:00
pedrocarlo
04154bf368
simplify code for doublecheck testing
2025-09-17 10:49:24 -03:00
pedrocarlo
f95ac87f06
simplify code for differential testing
2025-09-17 10:49:24 -03:00
pedrocarlo
4d9e676f65
simplify run_simualtion signature + remove watch mode file as it shares logic with default run simulation logic
2025-09-17 10:49:24 -03:00
pedrocarlo
b98c22a90e
run simulation on the total list of interactions to avoid recomputing whole vec of interactions on each loop + change state management in preparation for multiple connections change
2025-09-17 10:49:24 -03:00
pedrocarlo
faf38fe196
add connection Index to interaction struct
2025-09-17 10:49:24 -03:00
pedrocarlo
77cab30c5b
add connection index to interaction
2025-09-17 10:49:24 -03:00
Pekka Enberg
860627942a
Merge 'core: Rename IO::run_once() to IO::step()' from Pekka Enberg
...
The `run_once()` name is just a historical accident. Furthermore, it now
started to appear elsewhere as well, so let's just call it IO::step() as
we should have from the beginning.
Closes #3001
2025-09-10 15:11:28 +03:00
Pekka Enberg
e0a3d2741b
Merge 'simulator: Clean up code to use extract_if()' from Pavan Nambi
...
As we are in rust 1.88 rn, we can safely use extract_if
Reviewed-by: Pedro Muniz (@pedrocarlo)
Closes #2911
2025-09-10 14:59:42 +03:00
Pekka Enberg
2131a04b7d
core: Rename IO::run_once() to IO::step()
...
The `run_once()` name is just a historical accident. Furthermore, it now
started to appear elsewhere as well, so let's just call it IO::step() as we
should have from the beginning.
2025-09-10 14:36:02 +03:00
pedrocarlo
5f24ff6e45
fix non determinism by using IndexSet for order preserving iteration
2025-09-05 02:00:18 -03:00
Pavan-Nambi
b85233059a
use extract_if
2025-09-04 08:59:18 +05:30
Pekka Enberg
8204fbc8ec
simulator: Fix 64-bit offset build failures
...
Fix brekage from first merging commit d959319b ("Merge 'Use u64 for file
offsets in I/O and calculate such offsets in u64' from Preston Thorpe")
and then commit 6591b66c ("Merge 'Simulate I/O in memory' from Pedro
Muniz"), which was unaware of the changes.
2025-09-02 14:14:04 +03:00
Pekka Enberg
6591b66c3d
Merge 'Simulate I/O in memory' from Pedro Muniz
...
Revives the `MemorySim` PR and fixes a page cache issue where we could
have a unlocked and unloaded page in the page cache after a FaultyQuery.
The page would continue in the cache and could affect other queries as
the `page_cache` is at the `Connection` level.
Depends on #2785
Closes #2693
2025-09-02 13:28:48 +03:00
Pekka Enberg
d959319b42
Merge 'Use u64 for file offsets in I/O and calculate such offsets in u64' from Preston Thorpe
...
Using `usize` to compute file offsets caps us at ~16GB on 32-bit
systems. For example, with 4 KiB pages we can only address up to 1048576
pages; attempting the next page overflows a 32-bit usize and can wrap
the write offset, corrupting data. Switching our I/O APIs and offset
math to u64 avoids this overflow on 32-bit targets
Closes #2791
2025-09-02 09:06:49 +03:00
pedrocarlo
51a54d3c33
Fd should be part of Operation struct
2025-09-01 16:53:07 -03:00
pedrocarlo
1eb1171f55
do not fault on Fsync until we correctly define the expected behaviour in the simulator
2025-09-01 14:12:11 -03:00
pedrocarlo
c158db072b
inject fault in the IO Operation in the MemorySim
2025-09-01 14:12:11 -03:00
pedrocarlo
bd8cfe40f1
impl remove_file for MemoryIO + skip completion if finished
2025-09-01 14:12:11 -03:00
pedrocarlo
cc3488bba0
print path in stats for memory IO
2025-09-01 14:12:11 -03:00
pedrocarlo
fd4e74929a
Cli option to enable memory IO
2025-09-01 14:12:11 -03:00
pedrocarlo
117451fba1
impl WriteV for MemorySim
2025-09-01 14:12:11 -03:00
pedrocarlo
24c0d24be6
impl Truncate for MemorySim
2025-09-01 11:11:25 -03:00
pedrocarlo
40de4c0606
initial impl for MemorySim
2025-09-01 11:11:25 -03:00
pedrocarlo
8c7da3a704
impl SimIO for SimulatorIO
2025-09-01 11:11:03 -03:00
pedrocarlo
d8e9f145e6
create SimIO trait
2025-09-01 11:10:40 -03:00