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

joaoh82 / rust_sqlite / 25523736007
66%

Build:
DEFAULT BRANCH: main
Ran 07 May 2026 09:47PM UTC
Jobs 1
Files 52
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

07 May 2026 09:43PM UTC coverage: 64.474% (-0.3%) from 64.728%
25523736007

push

github

web-flow
feat(bench): DuckDB driver, Group B only (SQLR-16, sub-phase 9.5) (#106)

Adds the optional `duckdb-rs` driver to the bench suite, wired into
W7 / W8 / W9 (Group B only per the plan's viability section —
DuckDB's columnar / vectorized model is meaningful on read-only
SELECTs, aggregates, GROUP BY, and indexed range scans on read-
only data; misleading on per-row INSERTs / UPDATEs / OLTP-shape
PK probes).

Feature-gated: `cargo build -p sqlrite-benchmarks` stays lean and
fast as before. `make bench-duckdb` (and `cargo bench --features
duckdb`) pulls the heavy `libduckdb` cdylib (~50 MB compiled) and
the duckdb-rs crate into the build.

Driver shape mirrors the SQLite driver — open / execute /
execute_with_params / query_one / query_all. Two engine-specific
quirks worth knowing:

  - DuckDB's `Statement::column_count` is only valid AFTER query
    execution (it reads from the result struct, not the parse
    tree). The driver pulls `cols` from the first `Row` via
    `Row::as_ref().column_count()` instead — same numeric answer,
    correctly post-execution.
  - DuckDB widens `SUM(BIGINT)` to `HugeInt(i128)` defensively
    even when the result fits in i64. The driver downcasts with a
    range check; bails loudly on a genuine overflow.

Plan-doc + CLAUDE.md + bench README updated to reflect the new
driver. Makefile gains `make bench-duckdb`. The `duckdb` feature
declaration was empty in 9.1's Cargo.toml (placeholder for this
phase); now wired up properly.

Smoke run (M1 Pro, criterion --warm-up-time 1 --measurement-time 1
--sample-size 10):

  W7  SUM(v) over 1M rows
      sqlrite ~111 ms / sqlite ~31 ms / duckdb ~378 us
      DuckDB ~80x faster than SQLite — vectorized columnar wins.

  W8 GROUP BY at three cardinalities (10/1k/100k)
      duckdb 634 us / 701 us / 20.4 ms
      DuckDB 720x / 345x / 12x faster than SQLite. SQLRite × 100k
      stays skipped (SQLR-19).

  W9  INNER JOIN, per-PK probe (10k×10k)
      duckdb ~500 us
      ~220x SLOWER than... (continued)

0 of 53 new or added lines in 1 file covered. (0.0%)

8704 of 13500 relevant lines covered (64.47%)

1.2 hits per line

Uncovered Changes

Lines Coverage ∆ File
53
0.0
benchmarks/src/drivers/duckdb.rs
Jobs
ID Job ID Ran Files Coverage
1 25523736007.1 07 May 2026 09:47PM UTC 52
64.47
GitHub Action Run
Source Files on build 25523736007
  • Tree
  • List 52
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 9ffd55a5 on github
  • Prev Build on main (#25521223817)
  • Next Build on main (#25525466898)
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