• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

joaoh82 / rust_sqlite / 25632443257
69%

Build:
DEFAULT BRANCH: main
Ran 10 May 2026 03:28PM UTC
Jobs 1
Files 60
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

10 May 2026 03:23PM UTC coverage: 67.809% (+0.7%) from 67.119%
25632443257

push

github

web-flow
feat(engine): Phase 11.4 BEGIN CONCURRENT writes + commit-time validation (SQLR-22) (#125)

The headline slice of Phase 11. Multiple sibling Connections can
each hold their own open BEGIN CONCURRENT transaction; commits
validate against MvStore and abort with SQLRiteError::Busy on
row-level write-write conflict. The four plan-required tests
pass: disjoint inserts both commit, same-row updates collide and
one wins, aborted writes never become visible, retry-after-Busy
succeeds.

New `sqlrite::mvcc::transaction::ConcurrentTx` (per-Connection):
- TxHandle (RAII registry entry, drops at COMMIT/ROLLBACK)
- tables: HashMap<String, Table> — working state, swapped with
  db.tables for the duration of each statement's executor pass
- tables_at_begin: HashMap<String, Table> — immutable BEGIN-time
  clone, used at COMMIT to derive the write-set without seeing
  other transactions' commits as bogus DELETEs
- schema_at_begin: Vec<String> — sorted table-name fingerprint

Connection wiring:
- New concurrent_tx: Option<ConcurrentTx> field — per-handle so
  N siblings can each carry their own open tx.
- Connection::execute pre-parses for BEGIN CONCURRENT / COMMIT /
  ROLLBACK before sqlparser runs (sqlparser 0.61 doesn't have a
  Concurrent modifier; same intercept pattern as PRAGMA).
- begin_concurrent: pre-conditions (journal_mode = mvcc, no
  active tx, not read-only) → ConcurrentTx::begin → store.
- execute_in_concurrent_tx: rejects DDL via string-prefix check;
  std::mem::swap(db.tables, tx.tables); parks dummy TxnSnapshot
  on db.txn to suppress auto-save; runs process_command;
  unwinds in reverse. Executor itself unchanged.
- commit_concurrent: schema_unchanged check; diff_tables_for_writes
  against tx.tables_at_begin; validation walks MvStore for
  latest_committed_begin per row; if any > begin_ts → Busy with
  rollback semantics. On success: tick clock for commit_ts; push
  committed versions; per-row apply (delete_row + restore_row) to
  db.tables; save_da... (continued)

314 of 352 new or added lines in 4 files covered. (89.2%)

182 existing lines in 1 file now uncovered.

10313 of 15209 relevant lines covered (67.81%)

1.23 hits per line

Uncovered Changes

Lines Coverage ∆ File
32
87.13
0.57% src/connection.rs
2
9.72
0.78% src/error.rs
2
93.4
0.26% src/mvcc/store.rs
2
96.83
src/mvcc/transaction.rs

Coverage Regressions

Lines Coverage ∆ File
182
9.72
0.78% src/error.rs
Jobs
ID Job ID Ran Files Coverage
1 25632443257.1 10 May 2026 03:28PM UTC 60
67.81
GitHub Action Run
Source Files on build 25632443257
  • Tree
  • List 60
  • Changed 5
  • Source Changed 0
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 22a55172 on github
  • Prev Build on main (#25630593094)
  • Next Build on main (#25638930315)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc