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

joaoh82 / rust_sqlite / 25630593094
69%

Build:
DEFAULT BRANCH: main
Ran 10 May 2026 02:02PM UTC
Jobs 1
Files 59
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 01:57PM UTC coverage: 67.119% (+0.5%) from 66.605%
25630593094

push

github

web-flow
feat(engine): Phase 11.3 MvStore skeleton + PRAGMA journal_mode (SQLR-22) (#124)

* feat(engine): Phase 11.3 MvStore skeleton + PRAGMA journal_mode (SQLR-22)

Third slice of Phase 11 (concurrent writes via MVCC + BEGIN
CONCURRENT). Adds the in-memory version index (`MvStore`) and the
per-database `journal_mode` toggle so 11.4 can wire the executor's
read/write paths through a typed switch rather than a lazy-init
dance.

New `sqlrite::mvcc::store`:
- `RowID = (table, rowid)`, `VersionPayload = Present(cols) |
  Tombstone`, `RowVersion { begin, end, payload }`,
  `RowVersionChain = Vec<RowVersion>` behind `Arc<RwLock<…>>`.
- `MvStore` itself: `Mutex<HashMap<RowID, Arc<RwLock<…>>>>` plus a
  shared `MvccClock` and `ActiveTxRegistry`. The outer mutex
  guards the map's shape; the per-chain RwLock means readers
  walking different chains don't fight.
- `MvStore::read(row, begin_ts)` implements the textbook
  snapshot-isolation rule (`begin <= T < end`). Pure helper
  `visible_at(version, begin_ts)` exposed for tests + 11.6's GC.
- `push_committed` validates monotonic begin + caps the previous
  latest's `end` (validate-then-mutate; equal-begin retries
  surface as NonMonotonicBegin instead of leaving a half-capped
  chain). `push_in_flight` for tests + 11.4's BEGIN CONCURRENT
  writes; in-flight versions invisible to other readers.
- `MvStoreError` enum: `NotCommitted`, `PreviousAlreadyCapped`,
  `PreviousCappedByInFlight`, `NonMonotonicBegin`.

New `JournalMode { Wal, Mvcc }` enum (default Wal). `Database`
gains `journal_mode`, `mvcc_clock: Arc<MvccClock>`, `mv_store:
MvStore` fields — all allocated on `Database::new` even in Wal
mode so the toggle is cheap. `set_journal_mode` rejects
`Mvcc → Wal` while the store carries committed versions (would
silently strand them; v0 keeps this strict).

`PRAGMA journal_mode;` (read) renders the current mode; `PRAGMA
journal_mode = wal | mvcc;` (set) toggles. Case-insensitive on
both pragma name and value; numeric val... (continued)

281 of 306 new or added lines in 6 files covered. (91.83%)

9994 of 14890 relevant lines covered (67.12%)

1.23 hits per line

Uncovered Changes

Lines Coverage ∆ File
14
93.14
src/mvcc/store.rs
9
84.76
-7.1% src/sql/db/database.rs
2
86.56
0.43% src/connection.rs
Jobs
ID Job ID Ran Files Coverage
1 25630593094.1 10 May 2026 02:02PM UTC 59
67.12
GitHub Action Run
Source Files on build 25630593094
  • Tree
  • List 59
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 7fab595a on github
  • Prev Build on main (#25627067133)
  • Next Build on main (#25632443257)
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