22037 — non_unique_keys_in_a_json_object
The locked condition names a non-unique-key error for a JSON object. No fixed PostgreSQL 18.6 emitting path was resolved in the bounded scan.
English manual coverage begins with PostgreSQL 8.1. Source history and runtime observations have their own recorded version boundaries.
Reading PG 18·Select a recorded version
- aliases
- Unknown
- class name
- Data Exception
- condition name
- non_unique_keys_in_a_json_object
- lang
- en
- sqlstate
- 22037
Definition PG 18
22037
At a glance {#at-a-glance}
The locked condition names a non-unique-key error for a JSON object. No fixed PostgreSQL 18.6 emitting path was resolved in the bounded scan.
Meaning {#meaning}
The definition identifies non_unique_keys_in_a_json_object, but the bounded PostgreSQL 18.6 source review did not resolve a native 22037 emitter. This page therefore records the condition identity and diagnostic boundary without assigning a SQL/JSON constructor, parser, primary text, DETAIL, or HINT.
Diagnosis {#diagnosis}
If a deployment reports 22037, keep the complete primary, DETAIL, HINT, invoking SQL/JSON operation, and version together. Use that context to determine which object and duplicate-key policy emitted the condition; do not replace it with the related 22030 duplicate-key construction path.
Response {#response}
Follow the actual emitter's duplicate-key policy: normalize or reject repeated keys according to that operation's documented rule. If an ERROR occurred in an explicit transaction, roll back or roll back to the existing savepoint before retrying; autocommit can retry the corrected action.
Versions {#versions}
The locked catalogue records this condition from 12.0. Only the PostgreSQL 18.6 definition row is fixed here; no native emitting path or natural runtime observation is claimed.
Related {#related}
Sources {#sources}
The fixed definition row is errcodes.txt#L222. The bounded source review did not resolve a native 22037 emitting path; the structured evidence record keeps that unknown scope explicit, and no natural runtime was run.
Compare versions
SQLSTATE evidence and recorded runtime versions
claims · identity
{
"claim_id": "identity",
"limits": "",
"method": "Read fixed definition.",
"position": 0,
"runtime": [],
"sources": [
"src.errcodes.18.6"
],
"statement": "22037 is non_unique_keys_in_a_json_object in SQLSTATE Class 22."
}claims · bounded-source-scope
{
"claim_id": "bounded-source-scope",
"limits": "Bounded scan does not prove no extension or historical path exists.",
"method": "Retain definition without inventing emitter.",
"position": 1,
"runtime": [],
"sources": [
"src.errcodes.18.6"
],
"statement": "No fixed PostgreSQL 18.6 emitting path was resolved for 22037 in the bounded scan."
}claims · history
{
"claim_id": "history",
"limits": "",
"method": "Use catalogue boundary.",
"position": 2,
"runtime": [],
"sources": [
"src.errcodes.18.6"
],
"statement": "The locked catalogue records 22037 from 12.0 without proving exact implementation introduction."
}sources · src.errcodes.18.6
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "upstream_source",
"location": "",
"path": "src/backend/utils/errcodes.txt",
"position": 0,
"sha256": "6e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba",
"source_id": "src.errcodes.18.6",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt#L222"
}Source references
Full definition and evidence JSON
Definition sources
center · PostgreSQL 18 · english-manuals:f4356d43eab63a5d52c4efc26d9955a53f9362c2cb7a7980af5bff110c7c5c74
Text language: en · english-manuals:f4356d43eab63a5d52c4efc26d9955a53f9362c2cb7a7980af5bff110c7c5c74