Jussi Saurio
ebc4ddb2a2
Merge 'Simulator: fix alter table shadowing to modify index column name ' from Pedro Muniz
...
Forgot to modify the column name referenced in the indexes when
shadowing
Reviewed-by: bit-aloo (@Shourya742)
Closes #3712
2025-10-14 07:25:29 +03:00
pedrocarlo
45567e6837
fix alter table shadowing to modify index column name on rename and alter
2025-10-13 14:02:26 -03:00
pedrocarlo
bfeccf6543
integrate DropIndex in query generator
2025-10-13 13:56:36 -03:00
pedrocarlo
b2e54d9816
add Drop Index to simulator model
2025-10-13 13:32:16 -03:00
Jussi Saurio
c12c1db275
Merge 'Simulator: persist files in sim memory IO for integrity check' from Pedro Muniz
...
If we don't persist the files, rusqlite will open an empty file and
perform integrity check on it.
Reviewed-by: bit-aloo (@Shourya742)
Closes #3676
2025-10-13 14:23:53 +03:00
pedrocarlo
773fa28063
workaround in sqlite for schema changes become visible to other connections
2025-10-13 02:34:43 -03:00
pedrocarlo
dca1137f81
rusqlite stop trying to get rows when we error with InvalidColumnIndex
2025-10-13 02:34:43 -03:00
pedrocarlo
d99e3f590f
ALTER TABLE should be added to is_ddl
2025-10-13 02:34:43 -03:00
pedrocarlo
5f65196115
fix load_bug
2025-10-13 02:34:43 -03:00
pedrocarlo
b6c5fee300
do not count certain interactions in the InteractionPlan and correctly report the length when shrinking
2025-10-13 02:34:43 -03:00
pedrocarlo
49e96afd39
generate ALTER COLUMN
2025-10-13 02:34:43 -03:00
pedrocarlo
a18a472685
add option to disable alter column for differential testing
2025-10-13 02:34:43 -03:00
pedrocarlo
703efaa724
adjust Properties to skip Alter Table in certain conditions
2025-10-13 02:34:43 -03:00
pedrocarlo
9c2edbb8b7
create separate Index struct for sql generation
2025-10-13 02:04:15 -03:00
pedrocarlo
c072058e4b
add Alter Table query generation in Sim
2025-10-13 02:04:15 -03:00
pedrocarlo
230755eb2e
shadow for AlterTable
2025-10-13 02:04:15 -03:00
pedrocarlo
fafbdbfa9d
persist files in sim memory io for integrity check
2025-10-11 15:03:22 -03:00
pedrocarlo
f593080c2a
add Query::AlterTable variant
2025-10-10 11:08:04 -03:00
pedrocarlo
b6f94b2fa1
remove dead code in sim
2025-10-09 17:25:04 -03:00
pedrocarlo
f54b1132ca
ignore Property::AllTableHaveExpectedContent when counting stats, so we can generate more interesting interactions
2025-10-09 01:20:03 -03:00
pedrocarlo
300d918040
fix differential check for parse error
2025-10-07 15:03:50 -03:00
pedrocarlo
3b2583c540
adjust Interaction generation to take into account possibilty of PropertyDistribution to have 0 Weights
2025-10-07 14:17:37 -03:00
pedrocarlo
c578f7ba96
Faultless should produce any type of query, just not faulty
2025-10-07 14:15:51 -03:00
pedrocarlo
21fc8bae2a
Property::FaultyQuery and FsyncNoWait stored a list of tables to check the on the database. Again, the FaultyQuery could be a Drop Table which meant that we could be running a SELECT on an inexistent table. To solve this, just insert a Property that check all the tables in the db after a Faulty Property
2025-10-07 13:23:35 -03:00
pedrocarlo
6bad5d04ce
generate extensional queries when iterating over the next interaction, not when generating the property. This is necessary as the extensional queries can modify schema and thus could cause the next queries to fail because the DB enviroment context was not updated on generation time. Rule of thumb: queries should never be generated in bulk, always one a a time so the enviroment can be shadowed accordingly
2025-10-07 13:19:53 -03:00
pedrocarlo
6d5443d4f0
add Query::Placeholder
2025-10-07 11:38:47 -03:00
pedrocarlo
7eb504baef
certain properties cannot be generated if there are no tables in the current context
2025-10-07 11:38:47 -03:00
pedrocarlo
07cc1c548b
adjust query generation to avoid DROP for certain extensional queries
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
pedrocarlo
3e8867c8f5
DropSelect property should only fail when error is not a parse error on the table name
2025-10-07 11:38:47 -03:00
pedrocarlo
7f93f64fc5
enable Drop statements
2025-10-07 11:38:47 -03:00
pedrocarlo
8b6456f843
do not allow Property::Queries to attempt to be generated
2025-10-07 02:36:14 -03:00
pedrocarlo
91da12390d
refactor property generation to use query distribution and avoid more
...
memory allocations
2025-10-07 02:36:14 -03:00
pedrocarlo
b1c26505b8
adjust Rng generic to include ?Sized + introduce WeightedDistribution trait
2025-10-07 02:36:13 -03:00
pedrocarlo
a5845285be
remove unnecessary functions
2025-10-07 02:36:13 -03:00
pedrocarlo
bb9c8dea4f
rework interaction generation to only generate possible queries + do less allocations
2025-10-07 02:36:13 -03:00
pedrocarlo
1d1b09dc17
modify query generation to always sample from valid queries
2025-10-07 02:36:13 -03:00
Jussi Saurio
aab7d989df
Merge 'Simulator diff print' from Pedro Muniz
...
I was trying to debug MVCC simulator and database diffs, and this change
makes it much easier to visualize this. This PR is just a small quality
of life upgrade for debugability.
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com >
Closes #3548
2025-10-05 18:34:26 +03:00
pedrocarlo
25ad94079c
print_diff in ReadYourUpdatesBack + TableHasExpectedContent
2025-10-03 11:34:40 -03:00
pedrocarlo
dc0d4e2dcb
print diffs in assert tables
2025-10-03 02:01:14 -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
bit-aloo
460b87fdfb
Refactor simulator logger initialization
...
- Changed `init_logger()` to return `anyhow::Result<()>`
- Removed deprecated usage of `with_ansi`
2025-10-02 19:18:33 +05:30
bit-aloo
889ae2cd78
Remove log and env_logger in favor of tracing
...
- Deleted `log` and `env_logger` from simulator dependencies
- Migrated remaining `log::error!` and `log::trace!` calls to `tracing` macros
2025-10-02 19:09:09 +05:30
Jussi Saurio
d3c9ef3a5c
sim: add Profile::SimpleMvcc
...
- max 2 connections
- max 1 table
- no faults
- no indexes
Makes discovering very basic bugs in MVCC much easier
2025-10-02 10:14:31 +03:00
pedrocarlo
b624e449bc
simulator: reopen database with mvcc when necessary
2025-10-01 11:38:11 -03:00
pedrocarlo
9f95499a55
do not count BEGIN, COMMIT, and ROLLBACK queries as interactions in the InteractionPlan, so we can generate more meaningful intereactions without hitting the max cap quickly
2025-09-27 23:52:57 -03:00
pedrocarlo
13764e6b8e
in mvcc if creating a ddl statement, first commit all connections
2025-09-27 23:52:57 -03:00
pedrocarlo
dc1b1469a3
write connection index to sql file
2025-09-27 23:52:57 -03:00
pedrocarlo
461c765b7b
fix shrinking extensional queries. Now we only keep queries and/or properties that contain a depending table
2025-09-27 23:52:57 -03:00