smallint out of range

SQLSTATE 22003 condition numeric_value_out_of_range class 22 — Data Exception severity ERROR
Reproduced & verified on PostgreSQL 14.23, 15.18, 16.14, 17.10 and 18.4 — identical message on every version.
Last reviewed 30 May 2025 · Reproduced live with the SQL on this page.

Symptoms

A value or computation exceeded the range of smallint (-32768 to 32767). PostgreSQL raises SQLSTATE 22003 (numeric_value_out_of_range).

What the server log shows

ERROR:  smallint out of range

Why PostgreSQL raises this — what the manual says

Section 8.1.1 Integer Types:

“Attempts to store values outside of the allowed range will result in an error.”

smallint is a signed 16-bit integer. A value outside its narrow range cannot be represented and PostgreSQL reports 22003.

Common causes

How to fix it

  1. Use integer or bigint for larger values.
  2. Change the column type if the data outgrew smallint.
  3. Validate input ranges before insert.

Related & next steps

Reference: PostgreSQL 18 Section 8.1 “Numeric Types”.