Add schema-object staging scenarios to the dolt_add oracle#1657
Conversation
The add oracle had no coverage of schema objects. Seven scenarios now lock the staging semantics against real Dolt: views and triggers stay unstaged through named adds and stage via -A (including a staged view drop), and index changes surface through their parent table across named adds of the indexed table, named adds of unrelated tables, add -A, and staged-then-modified states. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Version-Control Performance CeilingsRuns: median of 3 executions per benchmark, excluding fixture setup. The
|
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: 6x / 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: 6x / 5x)All tests within ceilings. |
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: 6x / 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: 6x / 5x)All tests within ceilings. |
The dolt_add oracle (516 lines) had zero schema-object coverage: every scenario exercised plain table rows. These seven scenarios verify staging semantics against real Dolt for the two schema-object surfaces:
Views and triggers (behavior established by #1652, visible in status per #1653):
view_unstaged_after_named_add— a new view stays unstaged when only a named table is addedview_staged_by_all— views and triggers stage viadolt_add('-A')view_dropped_then_all— a staged view drop matches DoltIndex changes (attributed to their parent table per #1654):
index_change_unstaged_after_named_add_other— an index on table A stays unstaged when only table B is added by nameindex_staged_with_named_table— a named add of the indexed table carries its index changeindex_staged_by_all— index changes stage via-Aindex_staged_then_more_data— staged index followed by new working-tree rows splits staged/unstaged correctlyThe scenarios were split-validated before those PRs merged — the 3 view/trigger scenarios against master post-#1653, the 4 index scenarios against #1654's branch — and now pass unified on current master: 34 passed, 0 failed (27 pre-existing + 7 new).
🤖 Generated with Claude Code