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

joaoh82 / rust_sqlite / 25285323312
69%

Build:
DEFAULT BRANCH: main
Ran 03 May 2026 05:08PM UTC
Jobs 1
Files 45
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

03 May 2026 05:04PM UTC coverage: 59.771% (+1.1%) from 58.704%
25285323312

push

github

web-flow
feat(fts): 8c — cell-encoded persistence + on-demand v4→v5 bump (#80)

Phase 8 sub-phase 8c per docs/phase-8-plan.md. Persists FTS posting
lists as cell-encoded pages so save/reopen restores the index
bit-for-bit instead of re-tokenizing rows. Mirrors Phase 7d.3's
HNSW persistence shape across every layer.

User-visible: zero-friction. Existing v4 databases (no FTS) keep
writing v4 headers; the first save with an FTS index attached
promotes the file to v5. v5 readers handle both formats.

New:

- src/sql/pager/cell.rs:
  - KIND_FTS_POSTING (0x06) — cell tag for FTS posting cells.
- src/sql/pager/fts_cell.rs (NEW):
  - FtsPostingCell encode/decode. Either a posting cell
    (term + [(rowid, term_freq)]) or, with empty term, the
    sidecar carrying the per-doc length map. Sidecar preserves
    every indexed doc — including zero-token rows — so total_docs
    stays honest in BM25 post-reopen.
- src/sql/fts/posting_list.rs:
  - serialize_doc_lengths / serialize_postings emit cell payloads
    in deterministic order.
  - from_persisted_postings reconstructs the index without
    tokenization.
- src/sql/pager/header.rs:
  - FORMAT_VERSION_V4 / FORMAT_VERSION_V5 constants
    (FORMAT_VERSION_BASELINE = V4).
  - DbHeader gains format_version field; encode_header writes
    whatever the caller picked, decode_header accepts both
    versions.
- src/sql/pager/mod.rs:
  - stage_fts_btree / stage_fts_leaves stage one FTS index as a
    TableLeaf-shaped B-Tree (sidecar first, then per-term cells).
  - load_fts_postings walks leaves and decodes back into the
    (doc_lengths, postings) shape.
  - rebuild_fts_index gains the rootpage != 0 path (cell load),
    keeping rootpage == 0 as the compatibility replay path for
    v0.1.x→v0.2.0 upgraders.
  - save_database stages each FTS index, writes its rootpage to
    sqlrite_master, and conditionally bumps the header version
    to v5 (preserving v4 when no FTS index is attached).
  - parse_fts_create_index_sql helper, ... (continued)

332 of 368 new or added lines in 4 files covered. (90.22%)

6380 of 10674 relevant lines covered (59.77%)

1.17 hits per line

Uncovered Changes

Lines Coverage ∆ File
20
89.85
-0.12% src/sql/pager/mod.rs
15
89.36
src/sql/pager/fts_cell.rs
1
94.49
0.42% src/sql/fts/posting_list.rs
Jobs
ID Job ID Ran Files Coverage
1 25285323312.1 03 May 2026 05:08PM UTC 45
59.77
GitHub Action Run
Source Files on build 25285323312
  • Tree
  • List 45
  • Changed 6
  • Source Changed 0
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 8dd9c46c on github
  • Prev Build on main (#25284563739)
  • Next Build on main (#25285618732)
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