SQLSTATE 2201ESeverity lowLab verified

Incident brief

Logarithm of a negative number

PostgreSQL raises this data exception when ln(), log(), or log(b, x) is asked for the logarithm of a value that is zero or negative, which is undefined for the real logarithm.

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
Logarithm of a negative number
What triggers it
Call a logarithm function such as ln(x) or log(x) with an argument that is zero or negative.
The fix
Constrain the input so the argument is strictly greater than zero before taking its logarithm.
Proof
Reproduced on PostgreSQL 18.4 → A single SELECT reproduces SQLSTATE 2201E: the server rejects the negative logarithm argument rather than returning a value.

The fix

What to do right now

The immediate, application-level response to this error.

  • Constrain the input so the argument is strictly greater than zero before taking its logarithm.
  • Filter or clamp offending rows (WHERE x > 0), or use a CASE expression to return NULL for non-positive inputs.
Fix — SQL
-- Only take the logarithm of a strictly positive value.
SELECT ln(1);

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