Unify prolly txn stress: cursor merge + savepoint matrix - #1782
Conversation
Buff combinatorial coverage of nested SAVEPOINT interactions with mutmap DML, DDL/catalog reloads, prepared statements, indexes, views, and VC ops (dolt_commit seals savepoints; dolt_add + ROLLBACK TO). Wired into make c-tests / run_c_tests.sh gating and a CI loop job under DOLTLITE_PROLLY_CHECK=1 (same shape as cursor_merge_stress).
Fold cursor_merge_stress_test and savepoint_txn_matrix_test into a single gating binary that covers TREE+MUT cursor merge and the nested SAVEPOINT × mutmap × DDL × VC matrix. One CI loop job (prolly-txn-stress) under DOLTLITE_PROLLY_CHECK=1.
Version-Control Performance CeilingsRuns: median of 3 executions per benchmark, excluding fixture setup. The
|
Sysbench-Style Benchmark: Doltlite vs SQLiteIn-MemoryReads
Writes
File-BackedReads
Writes
File-Backed (autocommit)Each statement runs as its own transaction — exposes per-commit ReadsReads have no commit cost; these are the same SQL files as the
Writes
100000 rows, median of 5 invocations per test; autocommit writes use 9, workload-only timing via host monotonic clock when available. Performance Ceiling Check (2.5x individual, 2x average; autocommit writes: 10x / 5x)All tests within ceilings. |
Sysbench-Style Benchmark (composite PK): Doltlite vs SQLiteCompanion to the classic Sysbench-Style Benchmark. Every workload here In-MemoryReads
Writes
File-BackedReads
Writes
File-Backed (autocommit)Each statement runs as its own transaction — exposes per-commit ReadsReads have no commit cost; these are the same SQL files as the
Writes
100000 rows, median of 5 invocations per test; autocommit writes use 9, workload-only timing via host monotonic clock when available. Performance Ceiling Check (2.5x individual, 2x average; autocommit writes: 10x / 5x)All tests within ceilings. |
Sysbench-Style Benchmark (TEXT PK): Doltlite vs SQLiteCompanion to the classic Sysbench-Style Benchmark. Every workload here In-MemoryReads
Writes
File-BackedReads
Writes
File-Backed (autocommit)Each statement runs as its own transaction — exposes per-commit ReadsReads have no commit cost; these are the same SQL files as the
Writes
100000 rows, median of 5 invocations per test; autocommit writes use 9, workload-only timing via host monotonic clock when available. Performance Ceiling Check (2.5x individual, 2x average; autocommit writes: 10x / 5x)All tests within ceilings. |
Sysbench-Style Benchmark (BLOB PK): Doltlite vs SQLiteCompanion to the classic Sysbench-Style Benchmark. Every workload here In-MemoryReads
Writes
File-BackedReads
Writes
File-Backed (autocommit)Each statement runs as its own transaction — exposes per-commit ReadsReads have no commit cost; these are the same SQL files as the
Writes
100000 rows, median of 5 invocations per test; autocommit writes use 9, workload-only timing via host monotonic clock when available. Performance Ceiling Check (2.5x individual, 2x average; autocommit writes: 10x / 5x)All tests within ceilings. |
|
SummaryCoverage spans core transaction behavior and data durability, including inserts, updates, deletes, cursor scans, savepoints, schema changes, views, version history, and reopening persisted data. It also exercises edge and failure-recovery paths such as uniqueness violations, nested rollback, stale temporary state, repeated runs, and detection of later workflow failures, with healthy results throughout. Safe to merge — the exercised application behaviors completed successfully with no PR-attributable regressions or unresolved failures. An earlier intermittent assertion was not reproducible on repeated clean runs and is a flag for later rather than a merge blocker. Tests run by Ito
Tip Reply with @itoqa to send us feedback on this test run. |

Summary
Combine the P0-1 and P0-2 stress suites into one binary:
prolly_txn_stress_test— prolly storage txn stress:Includes
cursor_merge_stress_testcases (6)savepoint_txn_matrix_testcases (11)Wiring
main.mk/run_c_tests.shprolly-txn-stress(was two jobs), still ~5 min loop withDOLTLITE_PROLLY_CHECK=1cursor_merge_stress_test.candsavepoint_txn_matrix_test.cTest plan
make prolly_txn_stress_test && ./prolly_txn_stress_test→ 1577 passed, 0 failed (~0.2s)prolly-txn-stress+ build-test c-testsNote: supersedes the separate suite names from #1779 if that PR already landed; this PR removes
cursor_merge_stress_testin favor of the unified name.