sqlite-rowcap

SQLite: row cap

shipped

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-select SELECT 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.

ThresholdDefaultSet withStandard
row_cap10000checks.sqlite-rowcap.row_caplocked
KeyDefaultStandardMeaning
checks.sqlite-rowcap.row_cap10000lockedRows 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.