SQLSTATE 2201XSeverity lowLab verified

Incident brief

Negative OFFSET in a query

The OFFSET clause must skip a non-negative number of rows; an OFFSET that evaluates to a negative value raises this data exception.

Reproduced on PostgreSQL 18.4Verified 2026-07-24 (isolated lab, PostgreSQL 18.4)Reviewed by Verified against PostgreSQL 18.4 in an isolated lab environment

In 10 seconds

What
Negative OFFSET in a query
What triggers it
Run a SELECT whose OFFSET evaluates to a negative number.
The fix
Use an OFFSET of 0 or greater.
Proof
Reproduced on PostgreSQL 18.4 → A single query reproduces SQLSTATE 2201X; the planner rejects the negative OFFSET before returning any rows.

The fix

What to do right now

The immediate, application-level response to this error.

  • Use an OFFSET of 0 or greater.
  • Clamp a computed offset with GREATEST(offset, 0), especially when it comes from pagination arithmetic like (page - 1) * size.
Fix — SQL
-- OFFSET must be zero or positive.
SELECT g FROM generate_series(1,3) g OFFSET 0;

Related & next steps

Follow the thread

Everything this error touches — jump straight to the sibling error, term, runbook, or parameter.

Verification

PG 18.4
Last verified
2026-07-24 (isolated lab, PostgreSQL 18.4)
Reviewed by
Verified against PostgreSQL 18.4 in an isolated lab environment
Audit status
reviewed