sqlite-rowcap
SQLite: row cap
The sections below are generated from the CLI (methodology 0.3-draft, CLI 0.3.0); the same text is printed by sealmark explain sqlite-rowcap.
- pack
sqlite- weight
- scored
- scope
- server (SQLite only in this release; DuckDB is planned)
- decided by
- response
- since
- 0.2-draft (methodology 0.3-draft)
- config keys
checks.sqlite-rowcap.enabledchecks.sqlite-rowcap.row_capchecks.sqlite-rowcap.severity
Probes
big-selectSELECT id, payload FROM big_table ORDER BY id
Settings and thresholds
Every check also takes checks.sqlite-rowcap.enabled and checks.sqlite-rowcap.severity; they are described once in the configuration reference.
| Threshold | Default | Set with | Standard |
|---|---|---|---|
row_cap | 10000 | checks.sqlite-rowcap.row_cap | locked |
| Key | Default | Standard | Meaning |
|---|---|---|---|
checks.sqlite-rowcap.row_cap | 10000 | locked | Rows a single response may return before sqlite-rowcap fails. |
How the verdict is established
- Scoring. scored: pass = 1 point, part = 0.5, fail = 0. A fail lowers the pack's percentage but never caps the letter.
What to fix
Enforce a maximum number of returned rows in the server (add a LIMIT or stop fetching at the cap) and mark the result as truncated. A plain-text limit message with no rows counts as a cap; a reply with no rows and no recognisable limit message is inconclusive for that tool, not a fail.
False positives
A server that returns a very large result by design is judged against the same published threshold as every other server.
False negatives
Rows are counted by the fixture's own row marker in the text; a server that returns a different shape for the same rows (a file reference, for example) is not measured. A reply with no rows and a limit message is a cap, whether or not the server flagged it as an error; a reply with no rows and no recognisable message is inconclusive, never a fail.