{"Entry":{"collection":"sqlstate","key":"23503","name":"23503","aliases":[],"metadata":{"aliases":[],"case_count":1,"class_code":"23","condition_name":"foreign_key_violation","condition_names":["foreign_key_violation"],"content_hash":"4318c2042f07069b071c3c0aa1fba519853245fe52ab8a71ce1c5bb3af3cb801","depth":"full","editorial_review":"reviewed","evidence_tier":"observed_runtime","imported_at":"2026-09-30T17:45:27.190677+08:00","introduced":null,"known_present_by":"7.4","macros":["ERRCODE_FOREIGN_KEY_VIOLATION"],"name_zh":"外键约束冲突","present_in":["9.0","9.1","9.2","9.3","9.4","9.5","9.6","10","11","12","13","14","15","16","17","18","19"],"preview_in":["19"],"primary_macro":"ERRCODE_FOREIGN_KEY_VIOLATION","removed":null,"runtime_verification":"passed","severity_classes":["E"],"snippet_count":1,"source_rev":"english-manuals:589cc23b6cf670a34b7b062b6987cd58406e82d29cfdd85ebd0eaa42cd060276","sqlstate":"23503","status":"active","summary_zh":"外键约束冲突，子行找不到匹配的父键。"}},"Definition":{"Collection":"sqlstate","Key":"23503","SourceDatabase":"center","Version":"18","SourceTable":"sqlstate","SourceKey":"23503","SourceRevision":"english-manuals:589cc23b6cf670a34b7b062b6987cd58406e82d29cfdd85ebd0eaa42cd060276","Facts":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"56dacf78e618ff0fd8c533e05db597b80d7ebbad7f8e512a888217d0640aa328","slug":"18"},"lang":"en","sqlstate":"23503"},"ManualEvidence":{"doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"56dacf78e618ff0fd8c533e05db597b80d7ebbad7f8e512a888217d0640aa328","slug":"18"}},"MeasuredEvidence":{}},"Text":{"Collection":"sqlstate","Key":"23503","SourceDatabase":"center","Version":"","Locale":"en","Title":"23503 — foreign_key_violation","Summary":"23503 is PostgreSQL's foreignkeyviolation condition in Class 23, integrityconstraintviolation. A child insert or update without a matching parent key, or an ordinary parent key action covered by the foreign-key rules, can produce it. In PostgreSQL 18.6, the RESTRICT parent branch instead uses 23001, so classify the action and complete diagnostic before assigning this SQLSTATE.","BodyHTML":"\u003ch2\u003eAt a glance {#at-a-glance}\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003e23503\u003c/code\u003e is PostgreSQL\u0026#39;s \u003ccode\u003eforeign_key_violation\u003c/code\u003e condition in Class 23, \u003ccode\u003eintegrity_constraint_violation\u003c/code\u003e. A child insert or update without a matching parent key, or an ordinary parent key action covered by the foreign-key rules, can produce it. In PostgreSQL 18.6, the \u003ccode\u003eRESTRICT\u003c/code\u003e parent branch instead uses \u003ccode\u003e23001\u003c/code\u003e, so classify the action and complete diagnostic before assigning this SQLSTATE.\u003c/p\u003e\n\u003cp\u003eThe most useful diagnostic fields are the SQLSTATE (\u003ccode\u003eC\u003c/code\u003e), primary message (\u003ccode\u003eM\u003c/code\u003e), detail (\u003ccode\u003eD\u003c/code\u003e), and the schema, table, and constraint fields when the server supplies them. In psycopg these are available through \u003ccode\u003eexc.sqlstate\u003c/code\u003e and \u003ccode\u003eexc.diag\u003c/code\u003e. Preserve the complete diagnostic before retrying, because the detail names the missing or still-referenced key when PostgreSQL can show it.\u003c/p\u003e\n\u003cp\u003eFor an immediate foreign-key constraint, the error is raised by the violating statement. A deferred constraint can let the statement finish and raise \u003ccode\u003e23503\u003c/code\u003e at \u003ccode\u003eCOMMIT\u003c/code\u003e instead. In autocommit, the connection can execute the next command after an immediate failed statement. In an explicit transaction, an immediate failure leaves the transaction \u003ccode\u003eINERROR\u003c/code\u003e; issue \u003ccode\u003eROLLBACK\u003c/code\u003e or roll back to a savepoint before sending an unrelated command. A valid parent row and a fresh child write are the repair proof in the representative case.\u003c/p\u003e\n\u003cp\u003eThe case \u003ccode\u003efk_insert_missing_parent\u003c/code\u003e uses a real \u003ccode\u003eparents\u003c/code\u003e/\u003ccode\u003echildren\u003c/code\u003e foreign key. It passed on PostgreSQL 18.6 and the isolated PostgreSQL 10.21 target. The run IDs and per-case assertions are retained in the \u003ca href=\"#sources\" rel=\"nofollow\"\u003epublic evidence JSON\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eMeaning and trigger paths {#meaning}\u003c/h2\u003e\n\u003cp\u003eA foreign key on the child table points to a primary key or a suitable unique key on the parent table. PostgreSQL checks that relationship on child \u003ccode\u003eINSERT\u003c/code\u003e and key-changing \u003ccode\u003eUPDATE\u003c/code\u003e, and checks the reverse relationship when a parent key is updated or deleted. The exact timing depends on whether the constraint is immediate or deferred.\u003c/p\u003e\n\u003cp\u003eThe column matching rule also matters. With the default \u003ccode\u003eMATCH SIMPLE\u003c/code\u003e, a referencing row with any null key column does not have to match a parent. \u003ccode\u003eMATCH FULL\u003c/code\u003e permits an all-null key or an all-non-null key that matches, but rejects a mixture of null and non-null key columns. The representative case uses one \u003ccode\u003eNOT NULL\u003c/code\u003e column, so it deliberately does not demonstrate either null rule.\u003c/p\u003e\n\u003cp\u003eFor a parent \u003ccode\u003eDELETE\u003c/code\u003e or key-changing \u003ccode\u003eUPDATE\u003c/code\u003e, \u003ccode\u003eON DELETE/UPDATE NO ACTION\u003c/code\u003e can wait until the constraint\u0026#39;s check point when the constraint is deferrable, whereas \u003ccode\u003eRESTRICT\u003c/code\u003e checks immediately and cannot be deferred. In the fixed PostgreSQL 18.6 source, the \u003ccode\u003eRESTRICT\u003c/code\u003e branch uses \u003ccode\u003e23001\u003c/code\u003e (\u003ccode\u003erestrict_violation\u003c/code\u003e) with a dedicated message rather than the \u003ccode\u003e23503\u003c/code\u003e shown by this page\u0026#39;s child-write case. The action is part of the relationship contract, so a parent operation cannot be assigned a SQLSTATE by analogy with a missing-parent insert.\u003c/p\u003e\n\u003cp\u003eThe ordinary child-row path in \u003ccode\u003eri_triggers.c\u003c/code\u003e reports the condition with the template \u003ccode\u003einsert or update on table \u0026#34;%s\u0026#34; violates foreign key constraint \u0026#34;%s\u0026#34;\u003c/code\u003e. Its conditional detail is \u003ccode\u003eKey (%s)=(%s) is not present in table \u0026#34;%s\u0026#34;.\u003c/code\u003e; the server also attaches the child table and constraint through the protocol\u0026#39;s table and constraint fields. The ordinary parent-key branch can use a different \u003ccode\u003e23503\u003c/code\u003e primary template, while the fixed-version \u003ccode\u003eRESTRICT\u003c/code\u003e branch uses \u003ccode\u003e23001\u003c/code\u003e. This page\u0026#39;s runtime evidence covers only the missing-parent child write, not parent actions.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e23503\u003c/code\u003e identifies the relationship failure, not the application fix. A missing parent can mean an ordering bug, an incorrect identifier, an uncommitted parent in another transaction, or a deliberate delete that needs a cascade or another business rule. Inspect the operation and constraint definition before choosing a repair.\u003c/p\u003e\n\u003ch2\u003eMessages and diagnostics {#messages}\u003c/h2\u003e\n\u003cp\u003eThe representative operation creates a parent and child table, inserts no parent with key \u003ccode\u003e99\u003c/code\u003e, and then inserts the child row. The executable excerpt is the same trigger and recovery sequence used by the runner; names are schema-qualified by the disposable harness.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eCREATE TABLE parents(id integer PRIMARY KEY);\nCREATE TABLE children(\n    id integer PRIMARY KEY,\n    parent_id integer NOT NULL,\n    CONSTRAINT children_parent_fk FOREIGN KEY (parent_id) REFERENCES parents(id)\n);\nBEGIN;\nINSERT INTO children VALUES (1, 99);\n-- The server reports 23503 and the transaction is now INERROR.\nROLLBACK;\nBEGIN;\nINSERT INTO parents VALUES (99);\nINSERT INTO children VALUES (1, 99);\nCOMMIT;\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOn PostgreSQL 18.6, the natural error was:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eSQLSTATE: 23503\nseverity: ERROR\nmessage_primary: insert or update on table \u0026#34;children\u0026#34; violates foreign key constraint \u0026#34;children_parent_fk\u0026#34;\nmessage_detail: Key (parent_id)=(99) is not present in table \u0026#34;parents\u0026#34;.\nschema_name: c23503_fk_insert_missing_parent\ntable_name: children\nconstraint_name: children_parent_fk\nsource: ri_triggers.c / ri_ReportViolation / line 2783\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePostgreSQL 10.21 produced the same primary and detail text; its corresponding source line was 3266. The detail is conditional on permission to describe the key and may be absent. Do not parse a localized English message as the protocol contract: branch on \u003ccode\u003e23503\u003c/code\u003e, then use the structured fields and the operation context.\u003c/p\u003e\n\u003ch2\u003eDiagnosis {#diagnosis}\u003c/h2\u003e\n\u003cp\u003eFirst capture the failing statement, SQLSTATE, severity, primary message, detail, hint, server version, and transaction status. For an explicit transaction, record the status immediately after the error (\u003ccode\u003eINERROR\u003c/code\u003e) and after recovery (\u003ccode\u003eIDLE\u003c/code\u003e or \u003ccode\u003eINTRANS\u003c/code\u003e). A later \u003ccode\u003e25P02\u003c/code\u003e means the client sent a command while the transaction was already failed; it is a follow-on state, not a replacement for \u003ccode\u003e23503\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eInspect the named constraint and its referenced relation with \u003ccode\u003epg_constraint\u003c/code\u003e and \u003ccode\u003epg_get_constraintdef()\u003c/code\u003e. Compare the attempted key with the parent table under the relevant isolation level. If the parent row is being created by another transaction, determine whether the write order and commit ordering are intentional; a fixed delay does not prove that a parent became visible.\u003c/p\u003e\n\u003cp\u003eFor a parent delete or key update, inspect the referencing rows and the action declared by \u003ccode\u003eON DELETE\u003c/code\u003e or \u003ccode\u003eON UPDATE\u003c/code\u003e. For a deferred foreign key, the violating statement may succeed and \u003ccode\u003eCOMMIT\u003c/code\u003e may be the command that raises \u003ccode\u003e23503\u003c/code\u003e. Preserve that timing in logs and in retry logic.\u003c/p\u003e\n\u003ch2\u003eResponse and repair {#response}\u003c/h2\u003e\n\u003cp\u003eChoose the repair that matches the relationship:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCreate or select the intended parent before retrying the child write, as in the representative case.\u003c/li\u003e\n\u003cli\u003eCorrect the child identifier when it is stale or malformed; do not disable the constraint to hide a data error.\u003c/li\u003e\n\u003cli\u003eFor a parent removal, apply the declared cascade, set-null, or restrict policy only when it matches the business rule. Otherwise update or archive the referencing rows first.\u003c/li\u003e\n\u003cli\u003eIf another transaction owns the parent write, use a transaction design that establishes the intended ordering and isolation. Re-read after a rollback rather than replaying a stale child request blindly.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAfter a failed explicit transaction, \u003ccode\u003eROLLBACK\u003c/code\u003e discards its pending work and returns the connection to \u003ccode\u003eIDLE\u003c/code\u003e. A savepoint can retain earlier work when the child operation is optional. A successful repair must include a real parent lookup, a committed child row, and a post-commit read; merely receiving a new connection or issuing \u003ccode\u003eROLLBACK\u003c/code\u003e is not proof that the relationship is fixed.\u003c/p\u003e\n\u003ch2\u003eVersions and boundaries {#versions}\u003c/h2\u003e\n\u003cp\u003eThe catalogue has a definition-presence observation for \u003ccode\u003e23503\u003c/code\u003e at PostgreSQL 7.4 and through the locked 8.4.22 pre-9.0 definitions, then in every listed formal snapshot through PostgreSQL 18.6 and the PostgreSQL 19 Beta 3 preview. This is a definition-only presence boundary, not an exact implementation introduction or runtime-use claim. No condition definition change is recorded in the scanned range.\u003c/p\u003e\n\u003cp\u003eThe representative case passed on PostgreSQL 18.6 and 10.21. Source line numbers differ between those releases, while SQLSTATE, constraint identity, and the foreign-key diagnostic shape remain the compatibility boundary used here. Deferred timing, permissions, cascading actions, and concurrent parent creation are separate dimensions and are not implied by this one immediate-constraint run.\u003c/p\u003e\n\u003ch2\u003eRelated {#related}\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"/wiki/sqlstate/23505/\" rel=\"nofollow\"\u003e\u003ccode\u003e23505\u003c/code\u003e — \u003ccode\u003eunique_violation\u003c/code\u003e\u003c/a\u003e covers duplicate values in a unique invariant. \u003ca href=\"/wiki/sqlstate/23502/\" rel=\"nofollow\"\u003e\u003ccode\u003e23502\u003c/code\u003e — \u003ccode\u003enot_null_violation\u003c/code\u003e\u003c/a\u003e covers a required column receiving \u003ccode\u003eNULL\u003c/code\u003e. \u003ca href=\"/wiki/sqlstate/40001/\" rel=\"nofollow\"\u003e\u003ccode\u003e40001\u003c/code\u003e — \u003ccode\u003eserialization_failure\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"/wiki/sqlstate/40P01/\" rel=\"nofollow\"\u003e\u003ccode\u003e40P01\u003c/code\u003e — \u003ccode\u003edeadlock_detected\u003c/code\u003e\u003c/a\u003e describe concurrency outcomes that can surround a relationship repair. \u003ca href=\"/wiki/sqlstate/25P02/\" rel=\"nofollow\"\u003e\u003ccode\u003e25P02\u003c/code\u003e — \u003ccode\u003ein_failed_sql_transaction\u003c/code\u003e\u003c/a\u003e is the follow-on transaction state after an unhandled error.\u003c/p\u003e\n\u003ch2\u003eSources {#sources}\u003c/h2\u003e\n\u003cp\u003eThe structured evidence is recorded in the \u003ca href=\"#sources\" rel=\"nofollow\"\u003epublic evidence JSON\u003c/a\u003e. Source records are fixed to PostgreSQL commit \u003ccode\u003e724edf9bde9d356724ad384a2e196edc3c9f80f7\u003c/code\u003e; runtime records retain both target run IDs and their structured observations.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esrc.errcodes.18.6\u003c/code\u003e — \u003ca href=\"https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt#L235-L241\" rel=\"nofollow\"\u003e\u003ccode\u003eerrcodes.txt\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esrc.ri-triggers.18.6\u003c/code\u003e — \u003ca href=\"https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/adt/ri_triggers.c#L2761-L2809\" rel=\"nofollow\"\u003e\u003ccode\u003eri_triggers.c\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edoc.ddl.18.6\u003c/code\u003e — \u003ca href=\"/docs/18/ddl-constraints.html#DDL-CONSTRAINTS-FK\" rel=\"nofollow\"\u003eForeign Keys\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edoc.protocol.18\u003c/code\u003e — \u003ca href=\"/docs/18/protocol-error-fields.html\" rel=\"nofollow\"\u003eError and Notice Message Fields\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRuntime: \u003ccode\u003e23503-fk-manual-final-20260909\u003c/code\u003e (latest and pg10), with structured observations in the \u003ca href=\"#sources\" rel=\"nofollow\"\u003epublic evidence JSON\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n","SourceRevision":"english-manuals:589cc23b6cf670a34b7b062b6987cd58406e82d29cfdd85ebd0eaa42cd060276","ContentHash":"0d413cc6d4b76b83da068671dcf163183af498a7e2fd5a3a40c819beed27a66c","Payload":{"body_md":"\n## At a glance {#at-a-glance}\n\n`23503` is PostgreSQL's `foreign_key_violation` condition in Class 23, `integrity_constraint_violation`. A child insert or update without a matching parent key, or an ordinary parent key action covered by the foreign-key rules, can produce it. In PostgreSQL 18.6, the `RESTRICT` parent branch instead uses `23001`, so classify the action and complete diagnostic before assigning this SQLSTATE.\n\nThe most useful diagnostic fields are the SQLSTATE (`C`), primary message (`M`), detail (`D`), and the schema, table, and constraint fields when the server supplies them. In psycopg these are available through `exc.sqlstate` and `exc.diag`. Preserve the complete diagnostic before retrying, because the detail names the missing or still-referenced key when PostgreSQL can show it.\n\nFor an immediate foreign-key constraint, the error is raised by the violating statement. A deferred constraint can let the statement finish and raise `23503` at `COMMIT` instead. In autocommit, the connection can execute the next command after an immediate failed statement. In an explicit transaction, an immediate failure leaves the transaction `INERROR`; issue `ROLLBACK` or roll back to a savepoint before sending an unrelated command. A valid parent row and a fresh child write are the repair proof in the representative case.\n\nThe case `fk_insert_missing_parent` uses a real `parents`/`children` foreign key. It passed on PostgreSQL 18.6 and the isolated PostgreSQL 10.21 target. The run IDs and per-case assertions are retained in the [public evidence JSON](#sources).\n\n\n## Meaning and trigger paths {#meaning}\n\nA foreign key on the child table points to a primary key or a suitable unique key on the parent table. PostgreSQL checks that relationship on child `INSERT` and key-changing `UPDATE`, and checks the reverse relationship when a parent key is updated or deleted. The exact timing depends on whether the constraint is immediate or deferred.\n\nThe column matching rule also matters. With the default `MATCH SIMPLE`, a referencing row with any null key column does not have to match a parent. `MATCH FULL` permits an all-null key or an all-non-null key that matches, but rejects a mixture of null and non-null key columns. The representative case uses one `NOT NULL` column, so it deliberately does not demonstrate either null rule.\n\nFor a parent `DELETE` or key-changing `UPDATE`, `ON DELETE/UPDATE NO ACTION` can wait until the constraint's check point when the constraint is deferrable, whereas `RESTRICT` checks immediately and cannot be deferred. In the fixed PostgreSQL 18.6 source, the `RESTRICT` branch uses `23001` (`restrict_violation`) with a dedicated message rather than the `23503` shown by this page's child-write case. The action is part of the relationship contract, so a parent operation cannot be assigned a SQLSTATE by analogy with a missing-parent insert.\n\nThe ordinary child-row path in `ri_triggers.c` reports the condition with the template `insert or update on table \"%s\" violates foreign key constraint \"%s\"`. Its conditional detail is `Key (%s)=(%s) is not present in table \"%s\".`; the server also attaches the child table and constraint through the protocol's table and constraint fields. The ordinary parent-key branch can use a different `23503` primary template, while the fixed-version `RESTRICT` branch uses `23001`. This page's runtime evidence covers only the missing-parent child write, not parent actions.\n\n`23503` identifies the relationship failure, not the application fix. A missing parent can mean an ordering bug, an incorrect identifier, an uncommitted parent in another transaction, or a deliberate delete that needs a cascade or another business rule. Inspect the operation and constraint definition before choosing a repair.\n\n## Messages and diagnostics {#messages}\n\nThe representative operation creates a parent and child table, inserts no parent with key `99`, and then inserts the child row. The executable excerpt is the same trigger and recovery sequence used by the runner; names are schema-qualified by the disposable harness.\n\n```sql\nCREATE TABLE parents(id integer PRIMARY KEY);\nCREATE TABLE children(\n    id integer PRIMARY KEY,\n    parent_id integer NOT NULL,\n    CONSTRAINT children_parent_fk FOREIGN KEY (parent_id) REFERENCES parents(id)\n);\nBEGIN;\nINSERT INTO children VALUES (1, 99);\n-- The server reports 23503 and the transaction is now INERROR.\nROLLBACK;\nBEGIN;\nINSERT INTO parents VALUES (99);\nINSERT INTO children VALUES (1, 99);\nCOMMIT;\n```\n\nOn PostgreSQL 18.6, the natural error was:\n\n```text\nSQLSTATE: 23503\nseverity: ERROR\nmessage_primary: insert or update on table \"children\" violates foreign key constraint \"children_parent_fk\"\nmessage_detail: Key (parent_id)=(99) is not present in table \"parents\".\nschema_name: c23503_fk_insert_missing_parent\ntable_name: children\nconstraint_name: children_parent_fk\nsource: ri_triggers.c / ri_ReportViolation / line 2783\n```\n\nPostgreSQL 10.21 produced the same primary and detail text; its corresponding source line was 3266. The detail is conditional on permission to describe the key and may be absent. Do not parse a localized English message as the protocol contract: branch on `23503`, then use the structured fields and the operation context.\n\n## Diagnosis {#diagnosis}\n\nFirst capture the failing statement, SQLSTATE, severity, primary message, detail, hint, server version, and transaction status. For an explicit transaction, record the status immediately after the error (`INERROR`) and after recovery (`IDLE` or `INTRANS`). A later `25P02` means the client sent a command while the transaction was already failed; it is a follow-on state, not a replacement for `23503`.\n\nInspect the named constraint and its referenced relation with `pg_constraint` and `pg_get_constraintdef()`. Compare the attempted key with the parent table under the relevant isolation level. If the parent row is being created by another transaction, determine whether the write order and commit ordering are intentional; a fixed delay does not prove that a parent became visible.\n\nFor a parent delete or key update, inspect the referencing rows and the action declared by `ON DELETE` or `ON UPDATE`. For a deferred foreign key, the violating statement may succeed and `COMMIT` may be the command that raises `23503`. Preserve that timing in logs and in retry logic.\n\n## Response and repair {#response}\n\nChoose the repair that matches the relationship:\n\n- Create or select the intended parent before retrying the child write, as in the representative case.\n- Correct the child identifier when it is stale or malformed; do not disable the constraint to hide a data error.\n- For a parent removal, apply the declared cascade, set-null, or restrict policy only when it matches the business rule. Otherwise update or archive the referencing rows first.\n- If another transaction owns the parent write, use a transaction design that establishes the intended ordering and isolation. Re-read after a rollback rather than replaying a stale child request blindly.\n\nAfter a failed explicit transaction, `ROLLBACK` discards its pending work and returns the connection to `IDLE`. A savepoint can retain earlier work when the child operation is optional. A successful repair must include a real parent lookup, a committed child row, and a post-commit read; merely receiving a new connection or issuing `ROLLBACK` is not proof that the relationship is fixed.\n\n## Versions and boundaries {#versions}\n\nThe catalogue has a definition-presence observation for `23503` at PostgreSQL 7.4 and through the locked 8.4.22 pre-9.0 definitions, then in every listed formal snapshot through PostgreSQL 18.6 and the PostgreSQL 19 Beta 3 preview. This is a definition-only presence boundary, not an exact implementation introduction or runtime-use claim. No condition definition change is recorded in the scanned range.\n\nThe representative case passed on PostgreSQL 18.6 and 10.21. Source line numbers differ between those releases, while SQLSTATE, constraint identity, and the foreign-key diagnostic shape remain the compatibility boundary used here. Deferred timing, permissions, cascading actions, and concurrent parent creation are separate dimensions and are not implied by this one immediate-constraint run.\n\n## Related {#related}\n\n[`23505` — `unique_violation`](/wiki/sqlstate/23505/) covers duplicate values in a unique invariant. [`23502` — `not_null_violation`](/wiki/sqlstate/23502/) covers a required column receiving `NULL`. [`40001` — `serialization_failure`](/wiki/sqlstate/40001/) and [`40P01` — `deadlock_detected`](/wiki/sqlstate/40P01/) describe concurrency outcomes that can surround a relationship repair. [`25P02` — `in_failed_sql_transaction`](/wiki/sqlstate/25P02/) is the follow-on transaction state after an unhandled error.\n\n## Sources {#sources}\n\nThe structured evidence is recorded in the [public evidence JSON](#sources). Source records are fixed to PostgreSQL commit `724edf9bde9d356724ad384a2e196edc3c9f80f7`; runtime records retain both target run IDs and their structured observations.\n\n- `src.errcodes.18.6` — [`errcodes.txt`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt#L235-L241)\n- `src.ri-triggers.18.6` — [`ri_triggers.c`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/adt/ri_triggers.c#L2761-L2809)\n- `doc.ddl.18.6` — [Foreign Keys](/docs/18/ddl-constraints.html#DDL-CONSTRAINTS-FK)\n- `doc.protocol.18` — [Error and Notice Message Fields](/docs/18/protocol-error-fields.html)\n- Runtime: `23503-fk-manual-final-20260909` (latest and pg10), with structured observations in the [public evidence JSON](#sources)\n","description":"PostgreSQL reports SQLSTATE 23503 for a child foreign-key violation and some ordinary parent actions. Identify the action, relation, and constraint, then repair the data or transaction boundary.","is_stale":false,"name":"","sections":[{"anchor":"at-a-glance","heading":"At a glance","html":"\u003cp\u003e\u003ccode\u003e23503\u003c/code\u003e is PostgreSQL's \u003ccode\u003eforeign_key_violation\u003c/code\u003e condition in Class 23, \u003ccode\u003eintegrity_constraint_violation\u003c/code\u003e. A child insert or update without a matching parent key, or an ordinary parent key action covered by the foreign-key rules, can produce it. In PostgreSQL 18.6, the \u003ccode\u003eRESTRICT\u003c/code\u003e parent branch instead uses \u003ccode\u003e23001\u003c/code\u003e, so classify the action and complete diagnostic before assigning this SQLSTATE.\u003c/p\u003e\n\u003cp\u003eThe most useful diagnostic fields are the SQLSTATE (\u003ccode\u003eC\u003c/code\u003e), primary message (\u003ccode\u003eM\u003c/code\u003e), detail (\u003ccode\u003eD\u003c/code\u003e), and the schema, table, and constraint fields when the server supplies them. In psycopg these are available through \u003ccode\u003eexc.sqlstate\u003c/code\u003e and \u003ccode\u003eexc.diag\u003c/code\u003e. Preserve the complete diagnostic before retrying, because the detail names the missing or still-referenced key when PostgreSQL can show it.\u003c/p\u003e\n\u003cp\u003eFor an immediate foreign-key constraint, the error is raised by the violating statement. A deferred constraint can let the statement finish and raise \u003ccode\u003e23503\u003c/code\u003e at \u003ccode\u003eCOMMIT\u003c/code\u003e instead. In autocommit, the connection can execute the next command after an immediate failed statement. In an explicit transaction, an immediate failure leaves the transaction \u003ccode\u003eINERROR\u003c/code\u003e; issue \u003ccode\u003eROLLBACK\u003c/code\u003e or roll back to a savepoint before sending an unrelated command. A valid parent row and a fresh child write are the repair proof in the representative case.\u003c/p\u003e\n\u003cp\u003eThe case \u003ccode\u003efk_insert_missing_parent\u003c/code\u003e uses a real \u003ccode\u003eparents\u003c/code\u003e/\u003ccode\u003echildren\u003c/code\u003e foreign key. It passed on PostgreSQL 18.6 and the isolated PostgreSQL 10.21 target. The run IDs and per-case assertions are retained in the \u003ca href=\"#sources\"\u003epublic evidence JSON\u003c/a\u003e.\u003c/p\u003e"},{"anchor":"meaning","heading":"Meaning and trigger paths","html":"\u003cp\u003eA foreign key on the child table points to a primary key or a suitable unique key on the parent table. PostgreSQL checks that relationship on child \u003ccode\u003eINSERT\u003c/code\u003e and key-changing \u003ccode\u003eUPDATE\u003c/code\u003e, and checks the reverse relationship when a parent key is updated or deleted. The exact timing depends on whether the constraint is immediate or deferred.\u003c/p\u003e\n\u003cp\u003eThe column matching rule also matters. With the default \u003ccode\u003eMATCH SIMPLE\u003c/code\u003e, a referencing row with any null key column does not have to match a parent. \u003ccode\u003eMATCH FULL\u003c/code\u003e permits an all-null key or an all-non-null key that matches, but rejects a mixture of null and non-null key columns. The representative case uses one \u003ccode\u003eNOT NULL\u003c/code\u003e column, so it deliberately does not demonstrate either null rule.\u003c/p\u003e\n\u003cp\u003eFor a parent \u003ccode\u003eDELETE\u003c/code\u003e or key-changing \u003ccode\u003eUPDATE\u003c/code\u003e, \u003ccode\u003eON DELETE/UPDATE NO ACTION\u003c/code\u003e can wait until the constraint's check point when the constraint is deferrable, whereas \u003ccode\u003eRESTRICT\u003c/code\u003e checks immediately and cannot be deferred. In the fixed PostgreSQL 18.6 source, the \u003ccode\u003eRESTRICT\u003c/code\u003e branch uses \u003ccode\u003e23001\u003c/code\u003e (\u003ccode\u003erestrict_violation\u003c/code\u003e) with a dedicated message rather than the \u003ccode\u003e23503\u003c/code\u003e shown by this page's child-write case. The action is part of the relationship contract, so a parent operation cannot be assigned a SQLSTATE by analogy with a missing-parent insert.\u003c/p\u003e\n\u003cp\u003eThe ordinary child-row path in \u003ccode\u003eri_triggers.c\u003c/code\u003e reports the condition with the template \u003ccode\u003einsert or update on table \"%s\" violates foreign key constraint \"%s\"\u003c/code\u003e. Its conditional detail is \u003ccode\u003eKey (%s)=(%s) is not present in table \"%s\".\u003c/code\u003e; the server also attaches the child table and constraint through the protocol's table and constraint fields. The ordinary parent-key branch can use a different \u003ccode\u003e23503\u003c/code\u003e primary template, while the fixed-version \u003ccode\u003eRESTRICT\u003c/code\u003e branch uses \u003ccode\u003e23001\u003c/code\u003e. This page's runtime evidence covers only the missing-parent child write, not parent actions.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e23503\u003c/code\u003e identifies the relationship failure, not the application fix. A missing parent can mean an ordering bug, an incorrect identifier, an uncommitted parent in another transaction, or a deliberate delete that needs a cascade or another business rule. Inspect the operation and constraint definition before choosing a repair.\u003c/p\u003e"},{"anchor":"messages","heading":"Messages and diagnostics","html":"\u003cp\u003eThe representative operation creates a parent and child table, inserts no parent with key \u003ccode\u003e99\u003c/code\u003e, and then inserts the child row. The executable excerpt is the same trigger and recovery sequence used by the runner; names are schema-qualified by the disposable harness.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-sql\"\u003eCREATE TABLE parents(id integer PRIMARY KEY);\nCREATE TABLE children(\n    id integer PRIMARY KEY,\n    parent_id integer NOT NULL,\n    CONSTRAINT children_parent_fk FOREIGN KEY (parent_id) REFERENCES parents(id)\n);\nBEGIN;\nINSERT INTO children VALUES (1, 99);\n-- The server reports 23503 and the transaction is now INERROR.\nROLLBACK;\nBEGIN;\nINSERT INTO parents VALUES (99);\nINSERT INTO children VALUES (1, 99);\nCOMMIT;\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOn PostgreSQL 18.6, the natural error was:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-text\"\u003eSQLSTATE: 23503\nseverity: ERROR\nmessage_primary: insert or update on table \u0026quot;children\u0026quot; violates foreign key constraint \u0026quot;children_parent_fk\u0026quot;\nmessage_detail: Key (parent_id)=(99) is not present in table \u0026quot;parents\u0026quot;.\nschema_name: c23503_fk_insert_missing_parent\ntable_name: children\nconstraint_name: children_parent_fk\nsource: ri_triggers.c / ri_ReportViolation / line 2783\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePostgreSQL 10.21 produced the same primary and detail text; its corresponding source line was 3266. The detail is conditional on permission to describe the key and may be absent. Do not parse a localized English message as the protocol contract: branch on \u003ccode\u003e23503\u003c/code\u003e, then use the structured fields and the operation context.\u003c/p\u003e"},{"anchor":"diagnosis","heading":"Diagnosis","html":"\u003cp\u003eFirst capture the failing statement, SQLSTATE, severity, primary message, detail, hint, server version, and transaction status. For an explicit transaction, record the status immediately after the error (\u003ccode\u003eINERROR\u003c/code\u003e) and after recovery (\u003ccode\u003eIDLE\u003c/code\u003e or \u003ccode\u003eINTRANS\u003c/code\u003e). A later \u003ccode\u003e25P02\u003c/code\u003e means the client sent a command while the transaction was already failed; it is a follow-on state, not a replacement for \u003ccode\u003e23503\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eInspect the named constraint and its referenced relation with \u003ccode\u003epg_constraint\u003c/code\u003e and \u003ccode\u003epg_get_constraintdef()\u003c/code\u003e. Compare the attempted key with the parent table under the relevant isolation level. If the parent row is being created by another transaction, determine whether the write order and commit ordering are intentional; a fixed delay does not prove that a parent became visible.\u003c/p\u003e\n\u003cp\u003eFor a parent delete or key update, inspect the referencing rows and the action declared by \u003ccode\u003eON DELETE\u003c/code\u003e or \u003ccode\u003eON UPDATE\u003c/code\u003e. For a deferred foreign key, the violating statement may succeed and \u003ccode\u003eCOMMIT\u003c/code\u003e may be the command that raises \u003ccode\u003e23503\u003c/code\u003e. Preserve that timing in logs and in retry logic.\u003c/p\u003e"},{"anchor":"response","heading":"Response and repair","html":"\u003cp\u003eChoose the repair that matches the relationship:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCreate or select the intended parent before retrying the child write, as in the representative case.\u003c/li\u003e\n\u003cli\u003eCorrect the child identifier when it is stale or malformed; do not disable the constraint to hide a data error.\u003c/li\u003e\n\u003cli\u003eFor a parent removal, apply the declared cascade, set-null, or restrict policy only when it matches the business rule. Otherwise update or archive the referencing rows first.\u003c/li\u003e\n\u003cli\u003eIf another transaction owns the parent write, use a transaction design that establishes the intended ordering and isolation. Re-read after a rollback rather than replaying a stale child request blindly.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAfter a failed explicit transaction, \u003ccode\u003eROLLBACK\u003c/code\u003e discards its pending work and returns the connection to \u003ccode\u003eIDLE\u003c/code\u003e. A savepoint can retain earlier work when the child operation is optional. A successful repair must include a real parent lookup, a committed child row, and a post-commit read; merely receiving a new connection or issuing \u003ccode\u003eROLLBACK\u003c/code\u003e is not proof that the relationship is fixed.\u003c/p\u003e"},{"anchor":"versions","heading":"Versions and boundaries","html":"\u003cp\u003eThe catalogue has a definition-presence observation for \u003ccode\u003e23503\u003c/code\u003e at PostgreSQL 7.4 and through the locked 8.4.22 pre-9.0 definitions, then in every listed formal snapshot through PostgreSQL 18.6 and the PostgreSQL 19 Beta 3 preview. This is a definition-only presence boundary, not an exact implementation introduction or runtime-use claim. No condition definition change is recorded in the scanned range.\u003c/p\u003e\n\u003cp\u003eThe representative case passed on PostgreSQL 18.6 and 10.21. Source line numbers differ between those releases, while SQLSTATE, constraint identity, and the foreign-key diagnostic shape remain the compatibility boundary used here. Deferred timing, permissions, cascading actions, and concurrent parent creation are separate dimensions and are not implied by this one immediate-constraint run.\u003c/p\u003e"},{"anchor":"related","heading":"Related","html":"\u003cp\u003e\u003ca href=\"/wiki/sqlstate/23505/\"\u003e\u003ccode\u003e23505\u003c/code\u003e — \u003ccode\u003eunique_violation\u003c/code\u003e\u003c/a\u003e covers duplicate values in a unique invariant. \u003ca href=\"/wiki/sqlstate/23502/\"\u003e\u003ccode\u003e23502\u003c/code\u003e — \u003ccode\u003enot_null_violation\u003c/code\u003e\u003c/a\u003e covers a required column receiving \u003ccode\u003eNULL\u003c/code\u003e. \u003ca href=\"/wiki/sqlstate/40001/\"\u003e\u003ccode\u003e40001\u003c/code\u003e — \u003ccode\u003eserialization_failure\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"/wiki/sqlstate/40P01/\"\u003e\u003ccode\u003e40P01\u003c/code\u003e — \u003ccode\u003edeadlock_detected\u003c/code\u003e\u003c/a\u003e describe concurrency outcomes that can surround a relationship repair. \u003ca href=\"/wiki/sqlstate/25P02/\"\u003e\u003ccode\u003e25P02\u003c/code\u003e — \u003ccode\u003ein_failed_sql_transaction\u003c/code\u003e\u003c/a\u003e is the follow-on transaction state after an unhandled error.\u003c/p\u003e"},{"anchor":"sources","heading":"Sources","html":"\u003cp\u003eThe structured evidence is recorded in the \u003ca href=\"#sources\"\u003epublic evidence JSON\u003c/a\u003e. Source records are fixed to PostgreSQL commit \u003ccode\u003e724edf9bde9d356724ad384a2e196edc3c9f80f7\u003c/code\u003e; runtime records retain both target run IDs and their structured observations.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esrc.errcodes.18.6\u003c/code\u003e — \u003ca href=\"https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt#L235-L241\"\u003e\u003ccode\u003eerrcodes.txt\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esrc.ri-triggers.18.6\u003c/code\u003e — \u003ca href=\"https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/adt/ri_triggers.c#L2761-L2809\"\u003e\u003ccode\u003eri_triggers.c\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edoc.ddl.18.6\u003c/code\u003e — \u003ca href=\"/docs/18/ddl-constraints.html#DDL-CONSTRAINTS-FK\"\u003eForeign Keys\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edoc.protocol.18\u003c/code\u003e — \u003ca href=\"/docs/18/protocol-error-fields.html\"\u003eError and Notice Message Fields\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRuntime: \u003ccode\u003e23503-fk-manual-final-20260909\u003c/code\u003e (latest and pg10), with structured observations in the \u003ca href=\"#sources\"\u003epublic evidence JSON\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e"}],"summary":"23503 is PostgreSQL's foreignkeyviolation condition in Class 23, integrityconstraintviolation. A child insert or update without a matching parent key, or an ordinary parent key action covered by the foreign-key rules, can produce it. In PostgreSQL 18.6, the RESTRICT parent branch instead uses 23001, so classify the action and complete diagnostic before assigning this SQLSTATE.","title":"23503 — foreign_key_violation","translation_source_rev":"a468eb26fa3c568c744e6c5441c6f25f51de17e6349f8a7bc81be69c238b3cc1"}},"RequestedLocale":"en","Fallback":false,"Versions":["10","11","12","13","14","15","16","17","18","19","20","8.1","8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":{"aliases":[],"catalogue_notes":{"earliest_observed":"7.4","formal_scope":"9.0.0..18.6","latest_observed":"18.6","matrix_scope":["9.0.23","9.1.24","9.2.24","9.3.25","9.4.26","9.5.25","9.6.24","10.23","11.22","12.22","13.23","14.24","15.19","16.15","17.11","18.6"],"pre9_scope":{"formal_tag_count":191,"maximum_release":"8.4.22","minimum_release":"7.0.0","source_definition_count":153,"source_doc_count":153,"source_file_count":306,"source_scope":"7.4..8.4 definition files; 7.0..7.3 candidate-path source gap probes","source_tag_count":153},"pre9_status":"present","preview_scope":["19beta3"]},"class":"23","class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","condition_names":["foreign_key_violation"],"definition_changes":[],"english_manuals":{"10":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"9607b57e9f639b61785677ba4d226f5889fe1d19c8bf55a3337691899a9073cd","slug":"10"},"lang":"en","sqlstate":"23503"},"11":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"3a024e38263ad77de228eed7930b842b42dc1d5cab9ca3727be8eed872ec9539","slug":"11"},"lang":"en","sqlstate":"23503"},"12":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"1444bd6a138537cd75be88a220ee9472ac528f0cfc58758e49636d85455efe98","slug":"12"},"lang":"en","sqlstate":"23503"},"13":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"4a3ef8af218e5736dfde8660ba609e84233b6b3bac7e0210ff8724cf1b27b2db","slug":"13"},"lang":"en","sqlstate":"23503"},"14":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"1c12e83304e0f4ff64c9d98ca5e3007df6756932ed19867a4fa0e0650f6c5751","slug":"14"},"lang":"en","sqlstate":"23503"},"15":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"2161f58f6e87f6535b3b1f3d4661427bb6765f4f6b074fcc16fac97594b50599","slug":"15"},"lang":"en","sqlstate":"23503"},"16":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"928e705933d7c3d018ae3fba9d800b34e6325746d157339dce878473c519d100","slug":"16"},"lang":"en","sqlstate":"23503"},"17":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"868135520af87351e3ea1ba42656111cbd2d157d98e1fef05ea158ac5729d8b1","slug":"17"},"lang":"en","sqlstate":"23503"},"18":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"56dacf78e618ff0fd8c533e05db597b80d7ebbad7f8e512a888217d0640aa328","slug":"18"},"lang":"en","sqlstate":"23503"},"19":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"63fb8d1aa9f494eeab9d0f8542a2b673f7746ee41ae2689d19403cb3cc425a5c","slug":"19"},"lang":"en","sqlstate":"23503"},"20":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"0d3f602127cd137cf343b32d5fa78f175eeb6cdcb6353b1f6f998ede6cb7b911","slug":"devel"},"lang":"en","sqlstate":"23503"},"8.1":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"0177b8818643540dec7bbef1fe92b60a3961debd52a68412301647ca146c7f2d","slug":"8.1"},"lang":"en","sqlstate":"23503"},"8.2":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"d65bf7cff5958c304352c974e477183e21efe9bd68e03786001874653bf66963","slug":"8.2"},"lang":"en","sqlstate":"23503"},"8.3":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"118059002973cdec5466ed3cabe7c9370b4c93d8ab542b8661d0eeb50cf6950d","slug":"8.3"},"lang":"en","sqlstate":"23503"},"8.4":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"d63b10001be0581484022e33b78124a36bb3bd68d3ebe022cd7dfb375233432f","slug":"8.4"},"lang":"en","sqlstate":"23503"},"9.0":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"658fc09c4c10eed7ac7dea4ed3e3eff8cc5791eb5af26b7b4a31b0f863b316db","slug":"9.0"},"lang":"en","sqlstate":"23503"},"9.1":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"2d118b06c3b644c28b3ddefe9e4bef99a180321582209332372a5318f5bf8d1c","slug":"9.1"},"lang":"en","sqlstate":"23503"},"9.2":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"2a37575b39c858d37c58fc4de6a16109554fd3306602294180d78faa1170d2cd","slug":"9.2"},"lang":"en","sqlstate":"23503"},"9.3":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"2214b6869d764f7fba7221aefcdf1ab049b55ad51d63aa52054f3cd2c2533ae9","slug":"9.3"},"lang":"en","sqlstate":"23503"},"9.4":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"7243e2d653befe88733222ede67958f0c4b7fae967b58eb97807aeb3f32b4096","slug":"9.4"},"lang":"en","sqlstate":"23503"},"9.5":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"d40bc67cb331f1e4ccc0821ff57832c6c230edb0dce3ba4249defd21ae7ea29d","slug":"9.5"},"lang":"en","sqlstate":"23503"},"9.6":{"aliases":[],"class_name":"Integrity Constraint Violation","condition_name":"foreign_key_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"2ab55e487571c8998ec39b3d1bbae29ac6fc5c310875bee422d9a7b8b3fde5b3","slug":"9.6"},"lang":"en","sqlstate":"23503"}},"history_boundary":{"earliest_observed":"7.4","formal_tag_count":351,"gaps":[{"after":"18.6","before":"18.4","reason":"Non-adjacent release tags or a source gap; no removal is inferred."}],"latest_observed":"18.6","pre_range":{"first_observed":"7.4","known_lower_bound":"7.4 or earlier","last_observed":"8.4.22","notes":"Observed in the locked pre-9 formal release source; the label is a proven presence bound, not an exact introduction commit. Candidate source gaps remain for majors 7.0, 7.1, 7.2, 7.3.","scanned_formal_release_count":153,"scanned_source_scope":"7.4..8.4 definition files; 7.0..7.3 candidate-path source gap probes","source_gap_majors":["7.0","7.1","7.2","7.3"],"status":"partially_scanned"},"preview_snapshots":["19beta3"],"scanned_from":"9.0.0","scanned_to":"18.6"},"introduced":null,"known_present_by":"7.4","macros":["ERRCODE_FOREIGN_KEY_VIOLATION"],"manual_presence":["8.1","8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6","10","11","12","13","14","15","16","17","18","19","20"],"pre9_first_observed":"7.4","pre9_introduction_boundary":null,"pre9_last_observed":"8.4.22","pre9_presence_intervals":[{"end":"7.4.30","end_major":"7.4","end_tag":"REL7_4_30","evidence_count":31,"position":0,"start":"7.4","start_major":"7.4","start_tag":"REL7_4"},{"end":"8.0.26","end_major":"8.0","end_tag":"REL8_0_26","evidence_count":27,"position":1,"start":"8.0.0","start_major":"8.0","start_tag":"REL8_0_0"},{"end":"8.1.23","end_major":"8.1","end_tag":"REL8_1_23","evidence_count":24,"position":2,"start":"8.1.0","start_major":"8.1","start_tag":"REL8_1_0"},{"end":"8.2.23","end_major":"8.2","end_tag":"REL8_2_23","evidence_count":24,"position":3,"start":"8.2.0","start_major":"8.2","start_tag":"REL8_2_0"},{"end":"8.3.23","end_major":"8.3","end_tag":"REL8_3_23","evidence_count":24,"position":4,"start":"8.3.0","start_major":"8.3","start_tag":"REL8_3_0"},{"end":"8.4.22","end_major":"8.4","end_tag":"REL8_4_22","evidence_count":23,"position":5,"start":"8.4.0","start_major":"8.4","start_tag":"REL8_4_0"}],"pre9_status":"present","presence_intervals":[{"end":"9.0.23","end_major":"9.0","end_tag":"REL9_0_23","evidence_count":24,"position":0,"start":"9.0.0","start_major":"9.0","start_tag":"REL9_0_0"},{"end":"9.1.24","end_major":"9.1","end_tag":"REL9_1_24","evidence_count":25,"position":1,"start":"9.1.0","start_major":"9.1","start_tag":"REL9_1_0"},{"end":"9.2.24","end_major":"9.2","end_tag":"REL9_2_24","evidence_count":25,"position":2,"start":"9.2.0","start_major":"9.2","start_tag":"REL9_2_0"},{"end":"9.3.25","end_major":"9.3","end_tag":"REL9_3_25","evidence_count":26,"position":3,"start":"9.3.0","start_major":"9.3","start_tag":"REL9_3_0"},{"end":"9.4.26","end_major":"9.4","end_tag":"REL9_4_26","evidence_count":27,"position":4,"start":"9.4.0","start_major":"9.4","start_tag":"REL9_4_0"},{"end":"9.5.25","end_major":"9.5","end_tag":"REL9_5_25","evidence_count":26,"position":5,"start":"9.5.0","start_major":"9.5","start_tag":"REL9_5_0"},{"end":"9.6.24","end_major":"9.6","end_tag":"REL9_6_24","evidence_count":25,"position":6,"start":"9.6.0","start_major":"9.6","start_tag":"REL9_6_0"},{"end":"10.23","end_major":"10","end_tag":"REL_10_23","evidence_count":24,"position":7,"start":"10.0","start_major":"10","start_tag":"REL_10_0"},{"end":"11.22","end_major":"11","end_tag":"REL_11_22","evidence_count":23,"position":8,"start":"11.0","start_major":"11","start_tag":"REL_11_0"},{"end":"12.22","end_major":"12","end_tag":"REL_12_22","evidence_count":23,"position":9,"start":"12.0","start_major":"12","start_tag":"REL_12_0"},{"end":"13.23","end_major":"13","end_tag":"REL_13_23","evidence_count":24,"position":10,"start":"13.0","start_major":"13","start_tag":"REL_13_0"},{"end":"14.24","end_major":"14","end_tag":"REL_14_24","evidence_count":25,"position":11,"start":"14.0","start_major":"14","start_tag":"REL_14_0"},{"end":"15.19","end_major":"15","end_tag":"REL_15_19","evidence_count":20,"position":12,"start":"15.0","start_major":"15","start_tag":"REL_15_0"},{"end":"16.15","end_major":"16","end_tag":"REL_16_15","evidence_count":16,"position":13,"start":"16.0","start_major":"16","start_tag":"REL_16_0"},{"end":"17.11","end_major":"17","end_tag":"REL_17_11","evidence_count":12,"position":14,"start":"17.0","start_major":"17","start_tag":"REL_17_0"},{"end":"18.4","end_major":"18","end_tag":"REL_18_4","evidence_count":5,"position":15,"start":"18.0","start_major":"18","start_tag":"REL_18_0"},{"end":"18.6","end_major":"18","end_tag":"REL_18_6","evidence_count":1,"position":16,"start":"18.6","start_major":"18","start_tag":"REL_18_6"}],"present_in_snapshots":["9.0.23","9.1.24","9.2.24","9.3.25","9.4.26","9.5.25","9.6.24","10.23","11.22","12.22","13.23","14.24","15.19","16.15","17.11","18.6","19beta3"],"preview_in_snapshots":["19beta3"],"primary_macro":"ERRCODE_FOREIGN_KEY_VIOLATION","removed":null,"schema_version":2,"severity_classes":["E"],"sources":[{"channel":"formal","code_count":0,"commit":"3f78df10b168b78232fdbefe1d9d84c37f5aaaab","id":"postgresql:REL7_4:src/include/utils/errcodes.h","major":"7.4","path":"src/include/utils/errcodes.h","raw_path":".cache/catalogue/pre9/raw/definition/REL7_4.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/3f78df10b168b78232fdbefe1d9d84c37f5aaaab/src/include/utils/errcodes.h","record_count":0,"release":"7.4","repository":"https://github.com/postgres/postgres.git","sha256":"85e0d54037f0c49a06c909a4908fa24c19734c08f7f9611e5fbeb1b39745a539","size":18146,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL7_4","url":"https://github.com/postgres/postgres/blob/3f78df10b168b78232fdbefe1d9d84c37f5aaaab/src/include/utils/errcodes.h","version":"7.4"},{"channel":"formal","code_count":0,"commit":"c22b7eccd368754ea96865c046764382ab05db4b","id":"postgresql:REL8_0_0:src/include/utils/errcodes.h","major":"8.0","path":"src/include/utils/errcodes.h","raw_path":".cache/catalogue/pre9/raw/definition/REL8_0_0.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/c22b7eccd368754ea96865c046764382ab05db4b/src/include/utils/errcodes.h","record_count":0,"release":"8.0.0","repository":"https://github.com/postgres/postgres.git","sha256":"8b928e18943235ff0543eab22189ade1a018de43d72275f28b79df7d14e47849","size":20020,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL8_0_0","url":"https://github.com/postgres/postgres/blob/c22b7eccd368754ea96865c046764382ab05db4b/src/include/utils/errcodes.h","version":"8.0.0"},{"channel":"formal","code_count":0,"commit":"2a80c3c4dc56a44a26805c889ef71b614e769266","id":"postgresql:REL8_1_0:src/include/utils/errcodes.h","major":"8.1","path":"src/include/utils/errcodes.h","raw_path":".cache/catalogue/pre9/raw/definition/REL8_1_0.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/2a80c3c4dc56a44a26805c889ef71b614e769266/src/include/utils/errcodes.h","record_count":0,"release":"8.1.0","repository":"https://github.com/postgres/postgres.git","sha256":"52cab83d60a3b5fec10786b65bbfba39ef7404bc0e4599f6c239f2b56ad6a8ed","size":20109,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL8_1_0","url":"https://github.com/postgres/postgres/blob/2a80c3c4dc56a44a26805c889ef71b614e769266/src/include/utils/errcodes.h","version":"8.1.0"},{"channel":"formal","code_count":0,"commit":"2f52d7260ceac8e57613516d82a7404fbf3d137b","id":"postgresql:REL8_2_0:src/include/utils/errcodes.h","major":"8.2","path":"src/include/utils/errcodes.h","raw_path":".cache/catalogue/pre9/raw/definition/REL8_2_0.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/2f52d7260ceac8e57613516d82a7404fbf3d137b/src/include/utils/errcodes.h","record_count":0,"release":"8.2.0","repository":"https://github.com/postgres/postgres.git","sha256":"1f13bd962e663bf5222198a4b30fb016f1f21141b2c4ed2be351595ecf04f269","size":20247,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL8_2_0","url":"https://github.com/postgres/postgres/blob/2f52d7260ceac8e57613516d82a7404fbf3d137b/src/include/utils/errcodes.h","version":"8.2.0"},{"channel":"formal","code_count":0,"commit":"9e647a13872a5f34dc0009566925c5c352463780","id":"postgresql:REL8_3_0:src/include/utils/errcodes.h","major":"8.3","path":"src/include/utils/errcodes.h","raw_path":".cache/catalogue/pre9/raw/definition/REL8_3_0.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/9e647a13872a5f34dc0009566925c5c352463780/src/include/utils/errcodes.h","record_count":0,"release":"8.3.0","repository":"https://github.com/postgres/postgres.git","sha256":"8df5862003e7906ea11cf626431a426d1c7ae65d4fb85e526a46e29059b8e346","size":20650,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL8_3_0","url":"https://github.com/postgres/postgres/blob/9e647a13872a5f34dc0009566925c5c352463780/src/include/utils/errcodes.h","version":"8.3.0"},{"channel":"formal","code_count":0,"commit":"4d53a2f9699547bdc12831d2860c9d44c465e805","id":"postgresql:REL8_4_0:src/include/utils/errcodes.h","major":"8.4","path":"src/include/utils/errcodes.h","raw_path":".cache/catalogue/pre9/raw/definition/REL8_4_0.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/4d53a2f9699547bdc12831d2860c9d44c465e805/src/include/utils/errcodes.h","record_count":0,"release":"8.4.0","repository":"https://github.com/postgres/postgres.git","sha256":"b1a08b6c8e85631fe7a849d531841247a641bb799bca739c929a78e6702d3ab4","size":21169,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL8_4_0","url":"https://github.com/postgres/postgres/blob/4d53a2f9699547bdc12831d2860c9d44c465e805/src/include/utils/errcodes.h","version":"8.4.0"},{"channel":"formal","code_count":0,"commit":"8dd387500abe58a684c559f20c26ac08884b0c5d","id":"postgresql:REL8_4_22:src/include/utils/errcodes.h","major":"8.4","path":"src/include/utils/errcodes.h","raw_path":".cache/catalogue/pre9/raw/definition/REL8_4_22.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/8dd387500abe58a684c559f20c26ac08884b0c5d/src/include/utils/errcodes.h","record_count":0,"release":"8.4.22","repository":"https://github.com/postgres/postgres.git","sha256":"43fd9924243ff5bb5f51b5e7a5e5d8a011458beb5bb669b1d5b6122dac515936","size":21170,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL8_4_22","url":"https://github.com/postgres/postgres/blob/8dd387500abe58a684c559f20c26ac08884b0c5d/src/include/utils/errcodes.h","version":"8.4.22"},{"blob_id":"sha256:c814fbe5a5d2a61abe5bcf5c7754a9d339664aa4ee73f46fa11ed14966ff6713","channel":"formal","code_count":198,"commit":"861861edcc04a6e3ebdfe363311f122e2b226196","id":"postgresql:REL9_0_0:src/include/utils/errcodes.h","major":"9.0","parsed_path":"raw/definitions/REL9_0_0.parsed.json","path":"src/include/utils/errcodes.h","raw_path":"raw/definitions/REL9_0_0.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/861861edcc04a6e3ebdfe363311f122e2b226196/src/include/utils/errcodes.h","record_count":204,"release":"9.0.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"c814fbe5a5d2a61abe5bcf5c7754a9d339664aa4ee73f46fa11ed14966ff6713","size":21313,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL9_0_0","url":"https://github.com/postgres/postgres/blob/861861edcc04a6e3ebdfe363311f122e2b226196/src/include/utils/errcodes.h","version":"9.0.0"},{"blob_id":"sha256:e23d5129578249fc242f2737be2a577d6714b57917aad9deaf5ec156cadc52fd","channel":"formal","code_count":199,"commit":"ffb39e1aedcdd7b77ec920221b27ab02c40ddbfc","id":"postgresql:REL9_0_4:src/include/utils/errcodes.h","major":"9.0","parsed_path":"raw/definitions/REL9_0_4.parsed.json","path":"src/include/utils/errcodes.h","raw_path":"raw/definitions/REL9_0_4.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/ffb39e1aedcdd7b77ec920221b27ab02c40ddbfc/src/include/utils/errcodes.h","record_count":205,"release":"9.0.4","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"e23d5129578249fc242f2737be2a577d6714b57917aad9deaf5ec156cadc52fd","size":21384,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL9_0_4","url":"https://github.com/postgres/postgres/blob/ffb39e1aedcdd7b77ec920221b27ab02c40ddbfc/src/include/utils/errcodes.h","version":"9.0.4"},{"blob_id":"sha256:5b77881aab6f0d659fb3295e1adf53799a02c3d5680200bb10ff9f15d741f924","channel":"formal","code_count":199,"commit":"391aa8aac11fe78f3b2f5743b56e78b0ad6a5d84","id":"postgresql:REL9_0_18:src/include/utils/errcodes.h","major":"9.0","parsed_path":"raw/definitions/REL9_0_18.parsed.json","path":"src/include/utils/errcodes.h","raw_path":"raw/definitions/REL9_0_18.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/391aa8aac11fe78f3b2f5743b56e78b0ad6a5d84/src/include/utils/errcodes.h","record_count":205,"release":"9.0.18","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"5b77881aab6f0d659fb3295e1adf53799a02c3d5680200bb10ff9f15d741f924","size":21385,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL9_0_18","url":"https://github.com/postgres/postgres/blob/391aa8aac11fe78f3b2f5743b56e78b0ad6a5d84/src/include/utils/errcodes.h","version":"9.0.18"},{"blob_id":"sha256:2b1d71c453a82488c4e95df84a9ee18dc8fdcb2532a7c56f44f1e8c4265a8132","channel":"formal","code_count":228,"commit":"1f43001424a9da624a89b213d0be606a8212a50a","id":"postgresql:REL9_1_0:src/backend/utils/errcodes.txt","major":"9.1","parsed_path":"raw/definitions/REL9_1_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL9_1_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/1f43001424a9da624a89b213d0be606a8212a50a/src/backend/utils/errcodes.txt","record_count":234,"release":"9.1.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"2b1d71c453a82488c4e95df84a9ee18dc8fdcb2532a7c56f44f1e8c4265a8132","size":29355,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL9_1_0","url":"https://github.com/postgres/postgres/blob/1f43001424a9da624a89b213d0be606a8212a50a/src/backend/utils/errcodes.txt","version":"9.1.0"},{"blob_id":"sha256:271a522fcd18ec45ebe4c1235af0e27a0e9bf0376fda4073b9f4a9c0a00fc711","channel":"formal","code_count":232,"commit":"ef47adb414e46099155c34529a2a5caeea02fc41","id":"postgresql:REL9_2_0:src/backend/utils/errcodes.txt","major":"9.2","parsed_path":"raw/definitions/REL9_2_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL9_2_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/ef47adb414e46099155c34529a2a5caeea02fc41/src/backend/utils/errcodes.txt","record_count":238,"release":"9.2.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"271a522fcd18ec45ebe4c1235af0e27a0e9bf0376fda4073b9f4a9c0a00fc711","size":30387,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL9_2_0","url":"https://github.com/postgres/postgres/blob/ef47adb414e46099155c34529a2a5caeea02fc41/src/backend/utils/errcodes.txt","version":"9.2.0"},{"blob_id":"sha256:f90d801e724191c84e94ae33483e71b4e3c4de5730474d316df4c722a149897d","channel":"formal","code_count":232,"commit":"da645b3a73580ac30cf02e932b42d06157b98229","id":"postgresql:REL9_3_0:src/backend/utils/errcodes.txt","major":"9.3","parsed_path":"raw/definitions/REL9_3_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL9_3_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/da645b3a73580ac30cf02e932b42d06157b98229/src/backend/utils/errcodes.txt","record_count":238,"release":"9.3.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"f90d801e724191c84e94ae33483e71b4e3c4de5730474d316df4c722a149897d","size":30387,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL9_3_0","url":"https://github.com/postgres/postgres/blob/da645b3a73580ac30cf02e932b42d06157b98229/src/backend/utils/errcodes.txt","version":"9.3.0"},{"blob_id":"sha256:1695ec274fb29f0b0875ff674405e775334243835a6f6008e007dfe3a8260bf5","channel":"formal","code_count":232,"commit":"8ca336f4ac3f08a5f23e76c6e9a5f2c8064f5883","id":"postgresql:REL9_4_0:src/backend/utils/errcodes.txt","major":"9.4","parsed_path":"raw/definitions/REL9_4_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL9_4_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/8ca336f4ac3f08a5f23e76c6e9a5f2c8064f5883/src/backend/utils/errcodes.txt","record_count":238,"release":"9.4.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"1695ec274fb29f0b0875ff674405e775334243835a6f6008e007dfe3a8260bf5","size":30387,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL9_4_0","url":"https://github.com/postgres/postgres/blob/8ca336f4ac3f08a5f23e76c6e9a5f2c8064f5883/src/backend/utils/errcodes.txt","version":"9.4.0"},{"blob_id":"sha256:37f728a7e034ef0b05b060a4b82c7dd95c900e4a5501c80bfefd8d679889253b","channel":"formal","code_count":236,"commit":"cdd4ed5449bf317cc71b45a8deee0173822e7592","id":"postgresql:REL9_5_0:src/backend/utils/errcodes.txt","major":"9.5","parsed_path":"raw/definitions/REL9_5_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL9_5_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/cdd4ed5449bf317cc71b45a8deee0173822e7592/src/backend/utils/errcodes.txt","record_count":242,"release":"9.5.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"37f728a7e034ef0b05b060a4b82c7dd95c900e4a5501c80bfefd8d679889253b","size":30798,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL9_5_0","url":"https://github.com/postgres/postgres/blob/cdd4ed5449bf317cc71b45a8deee0173822e7592/src/backend/utils/errcodes.txt","version":"9.5.0"},{"blob_id":"sha256:bf4d94d84c7cfe695cb80e8f009872444574719a80a72e347eb66ef3686b86ef","channel":"formal","code_count":238,"commit":"a721a1ba9cf6c86cb52f1bf325d5a27b64e870d6","id":"postgresql:REL9_6_0:src/backend/utils/errcodes.txt","major":"9.6","parsed_path":"raw/definitions/REL9_6_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL9_6_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/a721a1ba9cf6c86cb52f1bf325d5a27b64e870d6/src/backend/utils/errcodes.txt","record_count":244,"release":"9.6.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"bf4d94d84c7cfe695cb80e8f009872444574719a80a72e347eb66ef3686b86ef","size":31135,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL9_6_0","url":"https://github.com/postgres/postgres/blob/a721a1ba9cf6c86cb52f1bf325d5a27b64e870d6/src/backend/utils/errcodes.txt","version":"9.6.0"},{"blob_id":"sha256:e5d829b24fe63aa69429fa1deb9675051fc8ffd4a8a4651861907a8f12ccb144","channel":"formal","code_count":240,"commit":"5df0e99bea1c3e5fbffa7fbd0982da88ea149bb6","id":"postgresql:REL_10_0:src/backend/utils/errcodes.txt","major":"10","parsed_path":"raw/definitions/REL_10_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_10_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/5df0e99bea1c3e5fbffa7fbd0982da88ea149bb6/src/backend/utils/errcodes.txt","record_count":246,"release":"10.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"e5d829b24fe63aa69429fa1deb9675051fc8ffd4a8a4651861907a8f12ccb144","size":31340,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_10_0","url":"https://github.com/postgres/postgres/blob/5df0e99bea1c3e5fbffa7fbd0982da88ea149bb6/src/backend/utils/errcodes.txt","version":"10.0"},{"blob_id":"sha256:8518be6de92ae135765e295c631c5f525120ca2b132453404b620f9aa595cab4","channel":"formal","code_count":241,"commit":"19f20081df059fef87e14c8e953669bd173dd7f1","id":"postgresql:REL_11_0:src/backend/utils/errcodes.txt","major":"11","parsed_path":"raw/definitions/REL_11_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_11_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/19f20081df059fef87e14c8e953669bd173dd7f1/src/backend/utils/errcodes.txt","record_count":247,"release":"11.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"8518be6de92ae135765e295c631c5f525120ca2b132453404b620f9aa595cab4","size":31453,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_11_0","url":"https://github.com/postgres/postgres/blob/19f20081df059fef87e14c8e953669bd173dd7f1/src/backend/utils/errcodes.txt","version":"11.0"},{"blob_id":"sha256:943259f3e36af1343dd0f090f7c7cec0e8c762b038d68c178aaa9b1b11999bfb","channel":"formal","code_count":257,"commit":"ad1f2885b8c82e0c2d56d7974f012cbecce17a17","id":"postgresql:REL_12_0:src/backend/utils/errcodes.txt","major":"12","parsed_path":"raw/definitions/REL_12_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_12_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/ad1f2885b8c82e0c2d56d7974f012cbecce17a17/src/backend/utils/errcodes.txt","record_count":263,"release":"12.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"943259f3e36af1343dd0f090f7c7cec0e8c762b038d68c178aaa9b1b11999bfb","size":33114,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_12_0","url":"https://github.com/postgres/postgres/blob/ad1f2885b8c82e0c2d56d7974f012cbecce17a17/src/backend/utils/errcodes.txt","version":"12.0"},{"blob_id":"sha256:9a464a3c3c99d2488782d4cdd0d46ce261085a944cb0c21e2d884586fbc8204d","channel":"formal","code_count":258,"commit":"29be9983a64c011eac0b9ee29895cce71e15ea77","id":"postgresql:REL_13_0:src/backend/utils/errcodes.txt","major":"13","parsed_path":"raw/definitions/REL_13_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_13_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/29be9983a64c011eac0b9ee29895cce71e15ea77/src/backend/utils/errcodes.txt","record_count":264,"release":"13.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"9a464a3c3c99d2488782d4cdd0d46ce261085a944cb0c21e2d884586fbc8204d","size":33239,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_13_0","url":"https://github.com/postgres/postgres/blob/29be9983a64c011eac0b9ee29895cce71e15ea77/src/backend/utils/errcodes.txt","version":"13.0"},{"blob_id":"sha256:c3c967fa20577f7ded946cb99e1a4706b85bb2476fd32d7e4a133c971a603552","channel":"formal","code_count":259,"commit":"86a4dc1e6f29d1992a2afa3fac1a0b0a6e84568c","id":"postgresql:REL_14_0:src/backend/utils/errcodes.txt","major":"14","parsed_path":"raw/definitions/REL_14_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_14_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/86a4dc1e6f29d1992a2afa3fac1a0b0a6e84568c/src/backend/utils/errcodes.txt","record_count":265,"release":"14.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"c3c967fa20577f7ded946cb99e1a4706b85bb2476fd32d7e4a133c971a603552","size":33337,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_14_0","url":"https://github.com/postgres/postgres/blob/86a4dc1e6f29d1992a2afa3fac1a0b0a6e84568c/src/backend/utils/errcodes.txt","version":"14.0"},{"blob_id":"sha256:a34b5fccd8a27c92817314dd942b79e76896cd1d9a8d4be21c81b02227850b4a","channel":"formal","code_count":260,"commit":"2a7ce2e2ce474504a707ec03e128fde66cfb8b48","id":"postgresql:REL_15_0:src/backend/utils/errcodes.txt","major":"15","parsed_path":"raw/definitions/REL_15_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_15_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/2a7ce2e2ce474504a707ec03e128fde66cfb8b48/src/backend/utils/errcodes.txt","record_count":266,"release":"15.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"a34b5fccd8a27c92817314dd942b79e76896cd1d9a8d4be21c81b02227850b4a","size":33458,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_15_0","url":"https://github.com/postgres/postgres/blob/2a7ce2e2ce474504a707ec03e128fde66cfb8b48/src/backend/utils/errcodes.txt","version":"15.0"},{"blob_id":"sha256:1d1d741b7b7c6dfd8275287e31c79befed75f3b9349e1a42ef0ca147c429ff88","channel":"formal","code_count":260,"commit":"c372fbbd8e911f2412b80a8c39d7079366565d67","id":"postgresql:REL_16_0:src/backend/utils/errcodes.txt","major":"16","parsed_path":"raw/definitions/REL_16_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_16_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/c372fbbd8e911f2412b80a8c39d7079366565d67/src/backend/utils/errcodes.txt","record_count":266,"release":"16.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"1d1d741b7b7c6dfd8275287e31c79befed75f3b9349e1a42ef0ca147c429ff88","size":33458,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_16_0","url":"https://github.com/postgres/postgres/blob/c372fbbd8e911f2412b80a8c39d7079366565d67/src/backend/utils/errcodes.txt","version":"16.0"},{"blob_id":"sha256:bb53279934510355eb4135a807c90d989f07650bd90f87026a4441f11d3296b1","channel":"formal","code_count":260,"commit":"d7ec59a63d745ba74fba0e280bbf85dc6d1caa3e","id":"postgresql:REL_17_0:src/backend/utils/errcodes.txt","major":"17","parsed_path":"raw/definitions/REL_17_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_17_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/d7ec59a63d745ba74fba0e280bbf85dc6d1caa3e/src/backend/utils/errcodes.txt","record_count":266,"release":"17.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"bb53279934510355eb4135a807c90d989f07650bd90f87026a4441f11d3296b1","size":33392,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_17_0","url":"https://github.com/postgres/postgres/blob/d7ec59a63d745ba74fba0e280bbf85dc6d1caa3e/src/backend/utils/errcodes.txt","version":"17.0"},{"blob_id":"sha256:6e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba","channel":"formal","code_count":262,"commit":"3d6a828938a5fa0444275d3d2f67b64ec3199eb7","id":"postgresql:REL_18_0:src/backend/utils/errcodes.txt","major":"18","parsed_path":"raw/definitions/REL_18_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_18_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/3d6a828938a5fa0444275d3d2f67b64ec3199eb7/src/backend/utils/errcodes.txt","record_count":268,"release":"18.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"6e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba","size":33739,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_18_0","url":"https://github.com/postgres/postgres/blob/3d6a828938a5fa0444275d3d2f67b64ec3199eb7/src/backend/utils/errcodes.txt","version":"18.0"},{"blob_id":"sha256:cadb9e83cde9a8699a7e74448891ca623af8579ccc8e11c7e533fb47cbc42f89","channel":"preview","code_count":262,"commit":"3638289fb57bdabec00deda98ee9624a35f5d66a","id":"postgresql:REL_19_BETA3:src/backend/utils/errcodes.txt","major":"19","parsed_path":"raw/definitions/REL_19_BETA3.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_19_BETA3.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/3638289fb57bdabec00deda98ee9624a35f5d66a/src/backend/utils/errcodes.txt","record_count":268,"release":"19beta3","release_date":"2026-08-13","repository":"https://github.com/postgres/postgres.git","sha256":"cadb9e83cde9a8699a7e74448891ca623af8579ccc8e11c7e533fb47cbc42f89","size":33739,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_19_BETA3","url":"https://github.com/postgres/postgres/blob/3638289fb57bdabec00deda98ee9624a35f5d66a/src/backend/utils/errcodes.txt","version":"19beta3"}],"sqlstate":"23503","status":"active","usage_evidence":[{"evidence_ids":["postgresql:REL7_4:src/include/utils/errcodes.h","postgresql:REL7_4_10:src/include/utils/errcodes.h","postgresql:REL7_4_11:src/include/utils/errcodes.h","postgresql:REL7_4_12:src/include/utils/errcodes.h","postgresql:REL7_4_13:src/include/utils/errcodes.h","postgresql:REL7_4_14:src/include/utils/errcodes.h","postgresql:REL7_4_15:src/include/utils/errcodes.h","postgresql:REL7_4_16:src/include/utils/errcodes.h","postgresql:REL7_4_17:src/include/utils/errcodes.h","postgresql:REL7_4_18:src/include/utils/errcodes.h","postgresql:REL7_4_19:src/include/utils/errcodes.h","postgresql:REL7_4_1:src/include/utils/errcodes.h","postgresql:REL7_4_20:src/include/utils/errcodes.h","postgresql:REL7_4_21:src/include/utils/errcodes.h","postgresql:REL7_4_22:src/include/utils/errcodes.h","postgresql:REL7_4_23:src/include/utils/errcodes.h","postgresql:REL7_4_24:src/include/utils/errcodes.h","postgresql:REL7_4_25:src/include/utils/errcodes.h","postgresql:REL7_4_26:src/include/utils/errcodes.h","postgresql:REL7_4_27:src/include/utils/errcodes.h","postgresql:REL7_4_28:src/include/utils/errcodes.h","postgresql:REL7_4_29:src/include/utils/errcodes.h","postgresql:REL7_4_2:src/include/utils/errcodes.h","postgresql:REL7_4_30:src/include/utils/errcodes.h","postgresql:REL7_4_3:src/include/utils/errcodes.h","postgresql:REL7_4_4:src/include/utils/errcodes.h","postgresql:REL7_4_5:src/include/utils/errcodes.h","postgresql:REL7_4_6:src/include/utils/errcodes.h","postgresql:REL7_4_7:src/include/utils/errcodes.h","postgresql:REL7_4_8:src/include/utils/errcodes.h","postgresql:REL7_4_9:src/include/utils/errcodes.h","postgresql:REL8_0_0:src/include/utils/errcodes.h","postgresql:REL8_0_10:src/include/utils/errcodes.h","postgresql:REL8_0_11:src/include/utils/errcodes.h","postgresql:REL8_0_12:src/include/utils/errcodes.h","postgresql:REL8_0_13:src/include/utils/errcodes.h","postgresql:REL8_0_14:src/include/utils/errcodes.h","postgresql:REL8_0_15:src/include/utils/errcodes.h","postgresql:REL8_0_16:src/include/utils/errcodes.h","postgresql:REL8_0_17:src/include/utils/errcodes.h","postgresql:REL8_0_18:src/include/utils/errcodes.h","postgresql:REL8_0_19:src/include/utils/errcodes.h","postgresql:REL8_0_1:src/include/utils/errcodes.h","postgresql:REL8_0_20:src/include/utils/errcodes.h","postgresql:REL8_0_21:src/include/utils/errcodes.h","postgresql:REL8_0_22:src/include/utils/errcodes.h","postgresql:REL8_0_23:src/include/utils/errcodes.h","postgresql:REL8_0_24:src/include/utils/errcodes.h","postgresql:REL8_0_25:src/include/utils/errcodes.h","postgresql:REL8_0_26:src/include/utils/errcodes.h","postgresql:REL8_0_2:src/include/utils/errcodes.h","postgresql:REL8_0_3:src/include/utils/errcodes.h","postgresql:REL8_0_4:src/include/utils/errcodes.h","postgresql:REL8_0_5:src/include/utils/errcodes.h","postgresql:REL8_0_6:src/include/utils/errcodes.h","postgresql:REL8_0_7:src/include/utils/errcodes.h","postgresql:REL8_0_8:src/include/utils/errcodes.h","postgresql:REL8_0_9:src/include/utils/errcodes.h","postgresql:REL8_1_0:src/include/utils/errcodes.h","postgresql:REL8_1_10:src/include/utils/errcodes.h","postgresql:REL8_1_11:src/include/utils/errcodes.h","postgresql:REL8_1_12:src/include/utils/errcodes.h","postgresql:REL8_1_13:src/include/utils/errcodes.h","postgresql:REL8_1_14:src/include/utils/errcodes.h","postgresql:REL8_1_15:src/include/utils/errcodes.h","postgresql:REL8_1_16:src/include/utils/errcodes.h","postgresql:REL8_1_17:src/include/utils/errcodes.h","postgresql:REL8_1_18:src/include/utils/errcodes.h","postgresql:REL8_1_19:src/include/utils/errcodes.h","postgresql:REL8_1_1:src/include/utils/errcodes.h","postgresql:REL8_1_20:src/include/utils/errcodes.h","postgresql:REL8_1_21:src/include/utils/errcodes.h","postgresql:REL8_1_22:src/include/utils/errcodes.h","postgresql:REL8_1_23:src/include/utils/errcodes.h","postgresql:REL8_1_2:src/include/utils/errcodes.h","postgresql:REL8_1_3:src/include/utils/errcodes.h","postgresql:REL8_1_4:src/include/utils/errcodes.h","postgresql:REL8_1_5:src/include/utils/errcodes.h","postgresql:REL8_1_6:src/include/utils/errcodes.h","postgresql:REL8_1_7:src/include/utils/errcodes.h","postgresql:REL8_1_8:src/include/utils/errcodes.h","postgresql:REL8_1_9:src/include/utils/errcodes.h","postgresql:REL8_2_0:src/include/utils/errcodes.h","postgresql:REL8_2_10:src/include/utils/errcodes.h","postgresql:REL8_2_11:src/include/utils/errcodes.h","postgresql:REL8_2_12:src/include/utils/errcodes.h","postgresql:REL8_2_13:src/include/utils/errcodes.h","postgresql:REL8_2_14:src/include/utils/errcodes.h","postgresql:REL8_2_15:src/include/utils/errcodes.h","postgresql:REL8_2_16:src/include/utils/errcodes.h","postgresql:REL8_2_17:src/include/utils/errcodes.h","postgresql:REL8_2_18:src/include/utils/errcodes.h","postgresql:REL8_2_19:src/include/utils/errcodes.h","postgresql:REL8_2_1:src/include/utils/errcodes.h","postgresql:REL8_2_20:src/include/utils/errcodes.h","postgresql:REL8_2_21:src/include/utils/errcodes.h","postgresql:REL8_2_22:src/include/utils/errcodes.h","postgresql:REL8_2_23:src/include/utils/errcodes.h","postgresql:REL8_2_2:src/include/utils/errcodes.h","postgresql:REL8_2_3:src/include/utils/errcodes.h","postgresql:REL8_2_4:src/include/utils/errcodes.h","postgresql:REL8_2_5:src/include/utils/errcodes.h","postgresql:REL8_2_6:src/include/utils/errcodes.h","postgresql:REL8_2_7:src/include/utils/errcodes.h","postgresql:REL8_2_8:src/include/utils/errcodes.h","postgresql:REL8_2_9:src/include/utils/errcodes.h","postgresql:REL8_3_0:src/include/utils/errcodes.h","postgresql:REL8_3_10:src/include/utils/errcodes.h","postgresql:REL8_3_11:src/include/utils/errcodes.h","postgresql:REL8_3_12:src/include/utils/errcodes.h","postgresql:REL8_3_13:src/include/utils/errcodes.h","postgresql:REL8_3_14:src/include/utils/errcodes.h","postgresql:REL8_3_15:src/include/utils/errcodes.h","postgresql:REL8_3_16:src/include/utils/errcodes.h","postgresql:REL8_3_17:src/include/utils/errcodes.h","postgresql:REL8_3_18:src/include/utils/errcodes.h","postgresql:REL8_3_19:src/include/utils/errcodes.h","postgresql:REL8_3_1:src/include/utils/errcodes.h","postgresql:REL8_3_20:src/include/utils/errcodes.h","postgresql:REL8_3_21:src/include/utils/errcodes.h","postgresql:REL8_3_22:src/include/utils/errcodes.h","postgresql:REL8_3_23:src/include/utils/errcodes.h","postgresql:REL8_3_2:src/include/utils/errcodes.h","postgresql:REL8_3_3:src/include/utils/errcodes.h","postgresql:REL8_3_4:src/include/utils/errcodes.h","postgresql:REL8_3_5:src/include/utils/errcodes.h","postgresql:REL8_3_6:src/include/utils/errcodes.h","postgresql:REL8_3_7:src/include/utils/errcodes.h","postgresql:REL8_3_8:src/include/utils/errcodes.h","postgresql:REL8_3_9:src/include/utils/errcodes.h","postgresql:REL8_4_0:src/include/utils/errcodes.h","postgresql:REL8_4_10:src/include/utils/errcodes.h","postgresql:REL8_4_11:src/include/utils/errcodes.h","postgresql:REL8_4_12:src/include/utils/errcodes.h","postgresql:REL8_4_13:src/include/utils/errcodes.h","postgresql:REL8_4_14:src/include/utils/errcodes.h","postgresql:REL8_4_15:src/include/utils/errcodes.h","postgresql:REL8_4_16:src/include/utils/errcodes.h","postgresql:REL8_4_17:src/include/utils/errcodes.h","postgresql:REL8_4_18:src/include/utils/errcodes.h","postgresql:REL8_4_19:src/include/utils/errcodes.h","postgresql:REL8_4_1:src/include/utils/errcodes.h","postgresql:REL8_4_20:src/include/utils/errcodes.h","postgresql:REL8_4_21:src/include/utils/errcodes.h","postgresql:REL8_4_22:src/include/utils/errcodes.h","postgresql:REL8_4_2:src/include/utils/errcodes.h","postgresql:REL8_4_3:src/include/utils/errcodes.h","postgresql:REL8_4_4:src/include/utils/errcodes.h","postgresql:REL8_4_5:src/include/utils/errcodes.h","postgresql:REL8_4_6:src/include/utils/errcodes.h","postgresql:REL8_4_7:src/include/utils/errcodes.h","postgresql:REL8_4_8:src/include/utils/errcodes.h","postgresql:REL8_4_9:src/include/utils/errcodes.h","postgresql:REL9_0_0:src/include/utils/errcodes.h","postgresql:REL9_0_10:src/include/utils/errcodes.h","postgresql:REL9_0_11:src/include/utils/errcodes.h","postgresql:REL9_0_12:src/include/utils/errcodes.h","postgresql:REL9_0_13:src/include/utils/errcodes.h","postgresql:REL9_0_14:src/include/utils/errcodes.h","postgresql:REL9_0_15:src/include/utils/errcodes.h","postgresql:REL9_0_16:src/include/utils/errcodes.h","postgresql:REL9_0_17:src/include/utils/errcodes.h","postgresql:REL9_0_18:src/include/utils/errcodes.h","postgresql:REL9_0_19:src/include/utils/errcodes.h","postgresql:REL9_0_1:src/include/utils/errcodes.h","postgresql:REL9_0_20:src/include/utils/errcodes.h","postgresql:REL9_0_21:src/include/utils/errcodes.h","postgresql:REL9_0_22:src/include/utils/errcodes.h","postgresql:REL9_0_23:src/include/utils/errcodes.h","postgresql:REL9_0_2:src/include/utils/errcodes.h","postgresql:REL9_0_3:src/include/utils/errcodes.h","postgresql:REL9_0_4:src/include/utils/errcodes.h","postgresql:REL9_0_5:src/include/utils/errcodes.h","postgresql:REL9_0_6:src/include/utils/errcodes.h","postgresql:REL9_0_7:src/include/utils/errcodes.h","postgresql:REL9_0_8:src/include/utils/errcodes.h","postgresql:REL9_0_9:src/include/utils/errcodes.h","postgresql:REL9_1_0:src/backend/utils/errcodes.txt","postgresql:REL9_1_10:src/backend/utils/errcodes.txt","postgresql:REL9_1_11:src/backend/utils/errcodes.txt","postgresql:REL9_1_12:src/backend/utils/errcodes.txt","postgresql:REL9_1_13:src/backend/utils/errcodes.txt","postgresql:REL9_1_14:src/backend/utils/errcodes.txt","postgresql:REL9_1_15:src/backend/utils/errcodes.txt","postgresql:REL9_1_16:src/backend/utils/errcodes.txt","postgresql:REL9_1_17:src/backend/utils/errcodes.txt","postgresql:REL9_1_18:src/backend/utils/errcodes.txt","postgresql:REL9_1_19:src/backend/utils/errcodes.txt","postgresql:REL9_1_1:src/backend/utils/errcodes.txt","postgresql:REL9_1_20:src/backend/utils/errcodes.txt","postgresql:REL9_1_21:src/backend/utils/errcodes.txt","postgresql:REL9_1_22:src/backend/utils/errcodes.txt","postgresql:REL9_1_23:src/backend/utils/errcodes.txt","postgresql:REL9_1_24:src/backend/utils/errcodes.txt","postgresql:REL9_1_2:src/backend/utils/errcodes.txt","postgresql:REL9_1_3:src/backend/utils/errcodes.txt","postgresql:REL9_1_4:src/backend/utils/errcodes.txt","postgresql:REL9_1_5:src/backend/utils/errcodes.txt","postgresql:REL9_1_6:src/backend/utils/errcodes.txt","postgresql:REL9_1_7:src/backend/utils/errcodes.txt","postgresql:REL9_1_8:src/backend/utils/errcodes.txt","postgresql:REL9_1_9:src/backend/utils/errcodes.txt","postgresql:REL9_2_0:src/backend/utils/errcodes.txt","postgresql:REL9_2_10:src/backend/utils/errcodes.txt","postgresql:REL9_2_11:src/backend/utils/errcodes.txt","postgresql:REL9_2_12:src/backend/utils/errcodes.txt","postgresql:REL9_2_13:src/backend/utils/errcodes.txt","postgresql:REL9_2_14:src/backend/utils/errcodes.txt","postgresql:REL9_2_15:src/backend/utils/errcodes.txt","postgresql:REL9_2_16:src/backend/utils/errcodes.txt","postgresql:REL9_2_17:src/backend/utils/errcodes.txt","postgresql:REL9_2_18:src/backend/utils/errcodes.txt","postgresql:REL9_2_19:src/backend/utils/errcodes.txt","postgresql:REL9_2_1:src/backend/utils/errcodes.txt","postgresql:REL9_2_20:src/backend/utils/errcodes.txt","postgresql:REL9_2_21:src/backend/utils/errcodes.txt","postgresql:REL9_2_22:src/backend/utils/errcodes.txt","postgresql:REL9_2_23:src/backend/utils/errcodes.txt","postgresql:REL9_2_24:src/backend/utils/errcodes.txt","postgresql:REL9_2_2:src/backend/utils/errcodes.txt","postgresql:REL9_2_3:src/backend/utils/errcodes.txt","postgresql:REL9_2_4:src/backend/utils/errcodes.txt","postgresql:REL9_2_5:src/backend/utils/errcodes.txt","postgresql:REL9_2_6:src/backend/utils/errcodes.txt","postgresql:REL9_2_7:src/backend/utils/errcodes.txt","postgresql:REL9_2_8:src/backend/utils/errcodes.txt","postgresql:REL9_2_9:src/backend/utils/errcodes.txt","postgresql:REL9_3_0:src/backend/utils/errcodes.txt","postgresql:REL9_3_10:src/backend/utils/errcodes.txt","postgresql:REL9_3_11:src/backend/utils/errcodes.txt","postgresql:REL9_3_12:src/backend/utils/errcodes.txt","postgresql:REL9_3_13:src/backend/utils/errcodes.txt","postgresql:REL9_3_14:src/backend/utils/errcodes.txt","postgresql:REL9_3_15:src/backend/utils/errcodes.txt","postgresql:REL9_3_16:src/backend/utils/errcodes.txt","postgresql:REL9_3_17:src/backend/utils/errcodes.txt","postgresql:REL9_3_18:src/backend/utils/errcodes.txt","postgresql:REL9_3_19:src/backend/utils/errcodes.txt","postgresql:REL9_3_1:src/backend/utils/errcodes.txt","postgresql:REL9_3_20:src/backend/utils/errcodes.txt","postgresql:REL9_3_21:src/backend/utils/errcodes.txt","postgresql:REL9_3_22:src/backend/utils/errcodes.txt","postgresql:REL9_3_23:src/backend/utils/errcodes.txt","postgresql:REL9_3_24:src/backend/utils/errcodes.txt","postgresql:REL9_3_25:src/backend/utils/errcodes.txt","postgresql:REL9_3_2:src/backend/utils/errcodes.txt","postgresql:REL9_3_3:src/backend/utils/errcodes.txt","postgresql:REL9_3_4:src/backend/utils/errcodes.txt","postgresql:REL9_3_5:src/backend/utils/errcodes.txt","postgresql:REL9_3_6:src/backend/utils/errcodes.txt","postgresql:REL9_3_7:src/backend/utils/errcodes.txt","postgresql:REL9_3_8:src/backend/utils/errcodes.txt","postgresql:REL9_3_9:src/backend/utils/errcodes.txt","postgresql:REL9_4_0:src/backend/utils/errcodes.txt","postgresql:REL9_4_10:src/backend/utils/errcodes.txt","postgresql:REL9_4_11:src/backend/utils/errcodes.txt","postgresql:REL9_4_12:src/backend/utils/errcodes.txt","postgresql:REL9_4_13:src/backend/utils/errcodes.txt","postgresql:REL9_4_14:src/backend/utils/errcodes.txt","postgresql:REL9_4_15:src/backend/utils/errcodes.txt","postgresql:REL9_4_16:src/backend/utils/errcodes.txt","postgresql:REL9_4_17:src/backend/utils/errcodes.txt","postgresql:REL9_4_18:src/backend/utils/errcodes.txt","postgresql:REL9_4_19:src/backend/utils/errcodes.txt","postgresql:REL9_4_1:src/backend/utils/errcodes.txt","postgresql:REL9_4_20:src/backend/utils/errcodes.txt","postgresql:REL9_4_21:src/backend/utils/errcodes.txt","postgresql:REL9_4_22:src/backend/utils/errcodes.txt","postgresql:REL9_4_23:src/backend/utils/errcodes.txt","postgresql:REL9_4_24:src/backend/utils/errcodes.txt","postgresql:REL9_4_25:src/backend/utils/errcodes.txt","postgresql:REL9_4_26:src/backend/utils/errcodes.txt","postgresql:REL9_4_2:src/backend/utils/errcodes.txt","postgresql:REL9_4_3:src/backend/utils/errcodes.txt","postgresql:REL9_4_4:src/backend/utils/errcodes.txt","postgresql:REL9_4_5:src/backend/utils/errcodes.txt","postgresql:REL9_4_6:src/backend/utils/errcodes.txt","postgresql:REL9_4_7:src/backend/utils/errcodes.txt","postgresql:REL9_4_8:src/backend/utils/errcodes.txt","postgresql:REL9_4_9:src/backend/utils/errcodes.txt","postgresql:REL9_5_0:src/backend/utils/errcodes.txt","postgresql:REL9_5_10:src/backend/utils/errcodes.txt","postgresql:REL9_5_11:src/backend/utils/errcodes.txt","postgresql:REL9_5_12:src/backend/utils/errcodes.txt","postgresql:REL9_5_13:src/backend/utils/errcodes.txt","postgresql:REL9_5_14:src/backend/utils/errcodes.txt","postgresql:REL9_5_15:src/backend/utils/errcodes.txt","postgresql:REL9_5_16:src/backend/utils/errcodes.txt","postgresql:REL9_5_17:src/backend/utils/errcodes.txt","postgresql:REL9_5_18:src/backend/utils/errcodes.txt","postgresql:REL9_5_19:src/backend/utils/errcodes.txt","postgresql:REL9_5_1:src/backend/utils/errcodes.txt","postgresql:REL9_5_20:src/backend/utils/errcodes.txt","postgresql:REL9_5_21:src/backend/utils/errcodes.txt","postgresql:REL9_5_22:src/backend/utils/errcodes.txt","postgresql:REL9_5_23:src/backend/utils/errcodes.txt","postgresql:REL9_5_24:src/backend/utils/errcodes.txt","postgresql:REL9_5_25:src/backend/utils/errcodes.txt","postgresql:REL9_5_2:src/backend/utils/errcodes.txt","postgresql:REL9_5_3:src/backend/utils/errcodes.txt","postgresql:REL9_5_4:src/backend/utils/errcodes.txt","postgresql:REL9_5_5:src/backend/utils/errcodes.txt","postgresql:REL9_5_6:src/backend/utils/errcodes.txt","postgresql:REL9_5_7:src/backend/utils/errcodes.txt","postgresql:REL9_5_8:src/backend/utils/errcodes.txt","postgresql:REL9_5_9:src/backend/utils/errcodes.txt","postgresql:REL9_6_0:src/backend/utils/errcodes.txt","postgresql:REL9_6_10:src/backend/utils/errcodes.txt","postgresql:REL9_6_11:src/backend/utils/errcodes.txt","postgresql:REL9_6_12:src/backend/utils/errcodes.txt","postgresql:REL9_6_13:src/backend/utils/errcodes.txt","postgresql:REL9_6_14:src/backend/utils/errcodes.txt","postgresql:REL9_6_15:src/backend/utils/errcodes.txt","postgresql:REL9_6_16:src/backend/utils/errcodes.txt","postgresql:REL9_6_17:src/backend/utils/errcodes.txt","postgresql:REL9_6_18:src/backend/utils/errcodes.txt","postgresql:REL9_6_19:src/backend/utils/errcodes.txt","postgresql:REL9_6_1:src/backend/utils/errcodes.txt","postgresql:REL9_6_20:src/backend/utils/errcodes.txt","postgresql:REL9_6_21:src/backend/utils/errcodes.txt","postgresql:REL9_6_22:src/backend/utils/errcodes.txt","postgresql:REL9_6_23:src/backend/utils/errcodes.txt","postgresql:REL9_6_24:src/backend/utils/errcodes.txt","postgresql:REL9_6_2:src/backend/utils/errcodes.txt","postgresql:REL9_6_3:src/backend/utils/errcodes.txt","postgresql:REL9_6_4:src/backend/utils/errcodes.txt","postgresql:REL9_6_5:src/backend/utils/errcodes.txt","postgresql:REL9_6_6:src/backend/utils/errcodes.txt","postgresql:REL9_6_7:src/backend/utils/errcodes.txt","postgresql:REL9_6_8:src/backend/utils/errcodes.txt","postgresql:REL9_6_9:src/backend/utils/errcodes.txt","postgresql:REL_10_0:src/backend/utils/errcodes.txt","postgresql:REL_10_10:src/backend/utils/errcodes.txt","postgresql:REL_10_11:src/backend/utils/errcodes.txt","postgresql:REL_10_12:src/backend/utils/errcodes.txt","postgresql:REL_10_13:src/backend/utils/errcodes.txt","postgresql:REL_10_14:src/backend/utils/errcodes.txt","postgresql:REL_10_15:src/backend/utils/errcodes.txt","postgresql:REL_10_16:src/backend/utils/errcodes.txt","postgresql:REL_10_17:src/backend/utils/errcodes.txt","postgresql:REL_10_18:src/backend/utils/errcodes.txt","postgresql:REL_10_19:src/backend/utils/errcodes.txt","postgresql:REL_10_1:src/backend/utils/errcodes.txt","postgresql:REL_10_20:src/backend/utils/errcodes.txt","postgresql:REL_10_21:src/backend/utils/errcodes.txt","postgresql:REL_10_22:src/backend/utils/errcodes.txt","postgresql:REL_10_23:src/backend/utils/errcodes.txt","postgresql:REL_10_2:src/backend/utils/errcodes.txt","postgresql:REL_10_3:src/backend/utils/errcodes.txt","postgresql:REL_10_4:src/backend/utils/errcodes.txt","postgresql:REL_10_5:src/backend/utils/errcodes.txt","postgresql:REL_10_6:src/backend/utils/errcodes.txt","postgresql:REL_10_7:src/backend/utils/errcodes.txt","postgresql:REL_10_8:src/backend/utils/errcodes.txt","postgresql:REL_10_9:src/backend/utils/errcodes.txt","postgresql:REL_11_0:src/backend/utils/errcodes.txt","postgresql:REL_11_10:src/backend/utils/errcodes.txt","postgresql:REL_11_11:src/backend/utils/errcodes.txt","postgresql:REL_11_12:src/backend/utils/errcodes.txt","postgresql:REL_11_13:src/backend/utils/errcodes.txt","postgresql:REL_11_14:src/backend/utils/errcodes.txt","postgresql:REL_11_15:src/backend/utils/errcodes.txt","postgresql:REL_11_16:src/backend/utils/errcodes.txt","postgresql:REL_11_17:src/backend/utils/errcodes.txt","postgresql:REL_11_18:src/backend/utils/errcodes.txt","postgresql:REL_11_19:src/backend/utils/errcodes.txt","postgresql:REL_11_1:src/backend/utils/errcodes.txt","postgresql:REL_11_20:src/backend/utils/errcodes.txt","postgresql:REL_11_21:src/backend/utils/errcodes.txt","postgresql:REL_11_22:src/backend/utils/errcodes.txt","postgresql:REL_11_2:src/backend/utils/errcodes.txt","postgresql:REL_11_3:src/backend/utils/errcodes.txt","postgresql:REL_11_4:src/backend/utils/errcodes.txt","postgresql:REL_11_5:src/backend/utils/errcodes.txt","postgresql:REL_11_6:src/backend/utils/errcodes.txt","postgresql:REL_11_7:src/backend/utils/errcodes.txt","postgresql:REL_11_8:src/backend/utils/errcodes.txt","postgresql:REL_11_9:src/backend/utils/errcodes.txt","postgresql:REL_12_0:src/backend/utils/errcodes.txt","postgresql:REL_12_10:src/backend/utils/errcodes.txt","postgresql:REL_12_11:src/backend/utils/errcodes.txt","postgresql:REL_12_12:src/backend/utils/errcodes.txt","postgresql:REL_12_13:src/backend/utils/errcodes.txt","postgresql:REL_12_14:src/backend/utils/errcodes.txt","postgresql:REL_12_15:src/backend/utils/errcodes.txt","postgresql:REL_12_16:src/backend/utils/errcodes.txt","postgresql:REL_12_17:src/backend/utils/errcodes.txt","postgresql:REL_12_18:src/backend/utils/errcodes.txt","postgresql:REL_12_19:src/backend/utils/errcodes.txt","postgresql:REL_12_1:src/backend/utils/errcodes.txt","postgresql:REL_12_20:src/backend/utils/errcodes.txt","postgresql:REL_12_21:src/backend/utils/errcodes.txt","postgresql:REL_12_22:src/backend/utils/errcodes.txt","postgresql:REL_12_2:src/backend/utils/errcodes.txt","postgresql:REL_12_3:src/backend/utils/errcodes.txt","postgresql:REL_12_4:src/backend/utils/errcodes.txt","postgresql:REL_12_5:src/backend/utils/errcodes.txt","postgresql:REL_12_6:src/backend/utils/errcodes.txt","postgresql:REL_12_7:src/backend/utils/errcodes.txt","postgresql:REL_12_8:src/backend/utils/errcodes.txt","postgresql:REL_12_9:src/backend/utils/errcodes.txt","postgresql:REL_13_0:src/backend/utils/errcodes.txt","postgresql:REL_13_10:src/backend/utils/errcodes.txt","postgresql:REL_13_11:src/backend/utils/errcodes.txt","postgresql:REL_13_12:src/backend/utils/errcodes.txt","postgresql:REL_13_13:src/backend/utils/errcodes.txt","postgresql:REL_13_14:src/backend/utils/errcodes.txt","postgresql:REL_13_15:src/backend/utils/errcodes.txt","postgresql:REL_13_16:src/backend/utils/errcodes.txt","postgresql:REL_13_17:src/backend/utils/errcodes.txt","postgresql:REL_13_18:src/backend/utils/errcodes.txt","postgresql:REL_13_19:src/backend/utils/errcodes.txt","postgresql:REL_13_1:src/backend/utils/errcodes.txt","postgresql:REL_13_20:src/backend/utils/errcodes.txt","postgresql:REL_13_21:src/backend/utils/errcodes.txt","postgresql:REL_13_22:src/backend/utils/errcodes.txt","postgresql:REL_13_23:src/backend/utils/errcodes.txt","postgresql:REL_13_2:src/backend/utils/errcodes.txt","postgresql:REL_13_3:src/backend/utils/errcodes.txt","postgresql:REL_13_4:src/backend/utils/errcodes.txt","postgresql:REL_13_5:src/backend/utils/errcodes.txt","postgresql:REL_13_6:src/backend/utils/errcodes.txt","postgresql:REL_13_7:src/backend/utils/errcodes.txt","postgresql:REL_13_8:src/backend/utils/errcodes.txt","postgresql:REL_13_9:src/backend/utils/errcodes.txt","postgresql:REL_14_0:src/backend/utils/errcodes.txt","postgresql:REL_14_10:src/backend/utils/errcodes.txt","postgresql:REL_14_11:src/backend/utils/errcodes.txt","postgresql:REL_14_12:src/backend/utils/errcodes.txt","postgresql:REL_14_13:src/backend/utils/errcodes.txt","postgresql:REL_14_14:src/backend/utils/errcodes.txt","postgresql:REL_14_15:src/backend/utils/errcodes.txt","postgresql:REL_14_16:src/backend/utils/errcodes.txt","postgresql:REL_14_17:src/backend/utils/errcodes.txt","postgresql:REL_14_18:src/backend/utils/errcodes.txt","postgresql:REL_14_19:src/backend/utils/errcodes.txt","postgresql:REL_14_1:src/backend/utils/errcodes.txt","postgresql:REL_14_20:src/backend/utils/errcodes.txt","postgresql:REL_14_21:src/backend/utils/errcodes.txt","postgresql:REL_14_22:src/backend/utils/errcodes.txt","postgresql:REL_14_23:src/backend/utils/errcodes.txt","postgresql:REL_14_24:src/backend/utils/errcodes.txt","postgresql:REL_14_2:src/backend/utils/errcodes.txt","postgresql:REL_14_3:src/backend/utils/errcodes.txt","postgresql:REL_14_4:src/backend/utils/errcodes.txt","postgresql:REL_14_5:src/backend/utils/errcodes.txt","postgresql:REL_14_6:src/backend/utils/errcodes.txt","postgresql:REL_14_7:src/backend/utils/errcodes.txt","postgresql:REL_14_8:src/backend/utils/errcodes.txt","postgresql:REL_14_9:src/backend/utils/errcodes.txt","postgresql:REL_15_0:src/backend/utils/errcodes.txt","postgresql:REL_15_10:src/backend/utils/errcodes.txt","postgresql:REL_15_11:src/backend/utils/errcodes.txt","postgresql:REL_15_12:src/backend/utils/errcodes.txt","postgresql:REL_15_13:src/backend/utils/errcodes.txt","postgresql:REL_15_14:src/backend/utils/errcodes.txt","postgresql:REL_15_15:src/backend/utils/errcodes.txt","postgresql:REL_15_16:src/backend/utils/errcodes.txt","postgresql:REL_15_17:src/backend/utils/errcodes.txt","postgresql:REL_15_18:src/backend/utils/errcodes.txt","postgresql:REL_15_19:src/backend/utils/errcodes.txt","postgresql:REL_15_1:src/backend/utils/errcodes.txt","postgresql:REL_15_2:src/backend/utils/errcodes.txt","postgresql:REL_15_3:src/backend/utils/errcodes.txt","postgresql:REL_15_4:src/backend/utils/errcodes.txt","postgresql:REL_15_5:src/backend/utils/errcodes.txt","postgresql:REL_15_6:src/backend/utils/errcodes.txt","postgresql:REL_15_7:src/backend/utils/errcodes.txt","postgresql:REL_15_8:src/backend/utils/errcodes.txt","postgresql:REL_15_9:src/backend/utils/errcodes.txt","postgresql:REL_16_0:src/backend/utils/errcodes.txt","postgresql:REL_16_10:src/backend/utils/errcodes.txt","postgresql:REL_16_11:src/backend/utils/errcodes.txt","postgresql:REL_16_12:src/backend/utils/errcodes.txt","postgresql:REL_16_13:src/backend/utils/errcodes.txt","postgresql:REL_16_14:src/backend/utils/errcodes.txt","postgresql:REL_16_15:src/backend/utils/errcodes.txt","postgresql:REL_16_1:src/backend/utils/errcodes.txt","postgresql:REL_16_2:src/backend/utils/errcodes.txt","postgresql:REL_16_3:src/backend/utils/errcodes.txt","postgresql:REL_16_4:src/backend/utils/errcodes.txt","postgresql:REL_16_5:src/backend/utils/errcodes.txt","postgresql:REL_16_6:src/backend/utils/errcodes.txt","postgresql:REL_16_7:src/backend/utils/errcodes.txt","postgresql:REL_16_8:src/backend/utils/errcodes.txt","postgresql:REL_16_9:src/backend/utils/errcodes.txt","postgresql:REL_17_0:src/backend/utils/errcodes.txt","postgresql:REL_17_10:src/backend/utils/errcodes.txt","postgresql:REL_17_11:src/backend/utils/errcodes.txt","postgresql:REL_17_1:src/backend/utils/errcodes.txt","postgresql:REL_17_2:src/backend/utils/errcodes.txt","postgresql:REL_17_3:src/backend/utils/errcodes.txt","postgresql:REL_17_4:src/backend/utils/errcodes.txt","postgresql:REL_17_5:src/backend/utils/errcodes.txt","postgresql:REL_17_6:src/backend/utils/errcodes.txt","postgresql:REL_17_7:src/backend/utils/errcodes.txt","postgresql:REL_17_8:src/backend/utils/errcodes.txt","postgresql:REL_17_9:src/backend/utils/errcodes.txt","postgresql:REL_18_0:src/backend/utils/errcodes.txt","postgresql:REL_18_1:src/backend/utils/errcodes.txt","postgresql:REL_18_2:src/backend/utils/errcodes.txt","postgresql:REL_18_3:src/backend/utils/errcodes.txt","postgresql:REL_18_4:src/backend/utils/errcodes.txt","postgresql:REL_18_6:src/backend/utils/errcodes.txt","postgresql:REL_19_BETA3:src/backend/utils/errcodes.txt"],"notes":"Presence in a PostgreSQL release definition file is established; runtime throw/use scanning is maintained separately.","scope":"release-definition-catalogue","status":"definition_only"},{"evidence_ids":["postgresql:REL7_4:src/include/utils/errcodes.h","postgresql:REL7_4_10:src/include/utils/errcodes.h","postgresql:REL7_4_11:src/include/utils/errcodes.h","postgresql:REL7_4_12:src/include/utils/errcodes.h","postgresql:REL7_4_13:src/include/utils/errcodes.h","postgresql:REL7_4_14:src/include/utils/errcodes.h","postgresql:REL7_4_15:src/include/utils/errcodes.h","postgresql:REL7_4_16:src/include/utils/errcodes.h","postgresql:REL7_4_17:src/include/utils/errcodes.h","postgresql:REL7_4_18:src/include/utils/errcodes.h","postgresql:REL7_4_19:src/include/utils/errcodes.h","postgresql:REL7_4_1:src/include/utils/errcodes.h","postgresql:REL7_4_20:src/include/utils/errcodes.h","postgresql:REL7_4_21:src/include/utils/errcodes.h","postgresql:REL7_4_22:src/include/utils/errcodes.h","postgresql:REL7_4_23:src/include/utils/errcodes.h","postgresql:REL7_4_24:src/include/utils/errcodes.h","postgresql:REL7_4_25:src/include/utils/errcodes.h","postgresql:REL7_4_26:src/include/utils/errcodes.h","postgresql:REL7_4_27:src/include/utils/errcodes.h","postgresql:REL7_4_28:src/include/utils/errcodes.h","postgresql:REL7_4_29:src/include/utils/errcodes.h","postgresql:REL7_4_2:src/include/utils/errcodes.h","postgresql:REL7_4_30:src/include/utils/errcodes.h","postgresql:REL7_4_3:src/include/utils/errcodes.h","postgresql:REL7_4_4:src/include/utils/errcodes.h","postgresql:REL7_4_5:src/include/utils/errcodes.h","postgresql:REL7_4_6:src/include/utils/errcodes.h","postgresql:REL7_4_7:src/include/utils/errcodes.h","postgresql:REL7_4_8:src/include/utils/errcodes.h","postgresql:REL7_4_9:src/include/utils/errcodes.h","postgresql:REL8_0_0:src/include/utils/errcodes.h","postgresql:REL8_0_10:src/include/utils/errcodes.h","postgresql:REL8_0_11:src/include/utils/errcodes.h","postgresql:REL8_0_12:src/include/utils/errcodes.h","postgresql:REL8_0_13:src/include/utils/errcodes.h","postgresql:REL8_0_14:src/include/utils/errcodes.h","postgresql:REL8_0_15:src/include/utils/errcodes.h","postgresql:REL8_0_16:src/include/utils/errcodes.h","postgresql:REL8_0_17:src/include/utils/errcodes.h","postgresql:REL8_0_18:src/include/utils/errcodes.h","postgresql:REL8_0_19:src/include/utils/errcodes.h","postgresql:REL8_0_1:src/include/utils/errcodes.h","postgresql:REL8_0_20:src/include/utils/errcodes.h","postgresql:REL8_0_21:src/include/utils/errcodes.h","postgresql:REL8_0_22:src/include/utils/errcodes.h","postgresql:REL8_0_23:src/include/utils/errcodes.h","postgresql:REL8_0_24:src/include/utils/errcodes.h","postgresql:REL8_0_25:src/include/utils/errcodes.h","postgresql:REL8_0_26:src/include/utils/errcodes.h","postgresql:REL8_0_2:src/include/utils/errcodes.h","postgresql:REL8_0_3:src/include/utils/errcodes.h","postgresql:REL8_0_4:src/include/utils/errcodes.h","postgresql:REL8_0_5:src/include/utils/errcodes.h","postgresql:REL8_0_6:src/include/utils/errcodes.h","postgresql:REL8_0_7:src/include/utils/errcodes.h","postgresql:REL8_0_8:src/include/utils/errcodes.h","postgresql:REL8_0_9:src/include/utils/errcodes.h","postgresql:REL8_1_0:src/include/utils/errcodes.h","postgresql:REL8_1_10:src/include/utils/errcodes.h","postgresql:REL8_1_11:src/include/utils/errcodes.h","postgresql:REL8_1_12:src/include/utils/errcodes.h","postgresql:REL8_1_13:src/include/utils/errcodes.h","postgresql:REL8_1_14:src/include/utils/errcodes.h","postgresql:REL8_1_15:src/include/utils/errcodes.h","postgresql:REL8_1_16:src/include/utils/errcodes.h","postgresql:REL8_1_17:src/include/utils/errcodes.h","postgresql:REL8_1_18:src/include/utils/errcodes.h","postgresql:REL8_1_19:src/include/utils/errcodes.h","postgresql:REL8_1_1:src/include/utils/errcodes.h","postgresql:REL8_1_20:src/include/utils/errcodes.h","postgresql:REL8_1_21:src/include/utils/errcodes.h","postgresql:REL8_1_22:src/include/utils/errcodes.h","postgresql:REL8_1_23:src/include/utils/errcodes.h","postgresql:REL8_1_2:src/include/utils/errcodes.h","postgresql:REL8_1_3:src/include/utils/errcodes.h","postgresql:REL8_1_4:src/include/utils/errcodes.h","postgresql:REL8_1_5:src/include/utils/errcodes.h","postgresql:REL8_1_6:src/include/utils/errcodes.h","postgresql:REL8_1_7:src/include/utils/errcodes.h","postgresql:REL8_1_8:src/include/utils/errcodes.h","postgresql:REL8_1_9:src/include/utils/errcodes.h","postgresql:REL8_2_0:src/include/utils/errcodes.h","postgresql:REL8_2_10:src/include/utils/errcodes.h","postgresql:REL8_2_11:src/include/utils/errcodes.h","postgresql:REL8_2_12:src/include/utils/errcodes.h","postgresql:REL8_2_13:src/include/utils/errcodes.h","postgresql:REL8_2_14:src/include/utils/errcodes.h","postgresql:REL8_2_15:src/include/utils/errcodes.h","postgresql:REL8_2_16:src/include/utils/errcodes.h","postgresql:REL8_2_17:src/include/utils/errcodes.h","postgresql:REL8_2_18:src/include/utils/errcodes.h","postgresql:REL8_2_19:src/include/utils/errcodes.h","postgresql:REL8_2_1:src/include/utils/errcodes.h","postgresql:REL8_2_20:src/include/utils/errcodes.h","postgresql:REL8_2_21:src/include/utils/errcodes.h","postgresql:REL8_2_22:src/include/utils/errcodes.h","postgresql:REL8_2_23:src/include/utils/errcodes.h","postgresql:REL8_2_2:src/include/utils/errcodes.h","postgresql:REL8_2_3:src/include/utils/errcodes.h","postgresql:REL8_2_4:src/include/utils/errcodes.h","postgresql:REL8_2_5:src/include/utils/errcodes.h","postgresql:REL8_2_6:src/include/utils/errcodes.h","postgresql:REL8_2_7:src/include/utils/errcodes.h","postgresql:REL8_2_8:src/include/utils/errcodes.h","postgresql:REL8_2_9:src/include/utils/errcodes.h","postgresql:REL8_3_0:src/include/utils/errcodes.h","postgresql:REL8_3_10:src/include/utils/errcodes.h","postgresql:REL8_3_11:src/include/utils/errcodes.h","postgresql:REL8_3_12:src/include/utils/errcodes.h","postgresql:REL8_3_13:src/include/utils/errcodes.h","postgresql:REL8_3_14:src/include/utils/errcodes.h","postgresql:REL8_3_15:src/include/utils/errcodes.h","postgresql:REL8_3_16:src/include/utils/errcodes.h","postgresql:REL8_3_17:src/include/utils/errcodes.h","postgresql:REL8_3_18:src/include/utils/errcodes.h","postgresql:REL8_3_19:src/include/utils/errcodes.h","postgresql:REL8_3_1:src/include/utils/errcodes.h","postgresql:REL8_3_20:src/include/utils/errcodes.h","postgresql:REL8_3_21:src/include/utils/errcodes.h","postgresql:REL8_3_22:src/include/utils/errcodes.h","postgresql:REL8_3_23:src/include/utils/errcodes.h","postgresql:REL8_3_2:src/include/utils/errcodes.h","postgresql:REL8_3_3:src/include/utils/errcodes.h","postgresql:REL8_3_4:src/include/utils/errcodes.h","postgresql:REL8_3_5:src/include/utils/errcodes.h","postgresql:REL8_3_6:src/include/utils/errcodes.h","postgresql:REL8_3_7:src/include/utils/errcodes.h","postgresql:REL8_3_8:src/include/utils/errcodes.h","postgresql:REL8_3_9:src/include/utils/errcodes.h","postgresql:REL8_4_0:src/include/utils/errcodes.h","postgresql:REL8_4_10:src/include/utils/errcodes.h","postgresql:REL8_4_11:src/include/utils/errcodes.h","postgresql:REL8_4_12:src/include/utils/errcodes.h","postgresql:REL8_4_13:src/include/utils/errcodes.h","postgresql:REL8_4_14:src/include/utils/errcodes.h","postgresql:REL8_4_15:src/include/utils/errcodes.h","postgresql:REL8_4_16:src/include/utils/errcodes.h","postgresql:REL8_4_17:src/include/utils/errcodes.h","postgresql:REL8_4_18:src/include/utils/errcodes.h","postgresql:REL8_4_19:src/include/utils/errcodes.h","postgresql:REL8_4_1:src/include/utils/errcodes.h","postgresql:REL8_4_20:src/include/utils/errcodes.h","postgresql:REL8_4_21:src/include/utils/errcodes.h","postgresql:REL8_4_22:src/include/utils/errcodes.h","postgresql:REL8_4_2:src/include/utils/errcodes.h","postgresql:REL8_4_3:src/include/utils/errcodes.h","postgresql:REL8_4_4:src/include/utils/errcodes.h","postgresql:REL8_4_5:src/include/utils/errcodes.h","postgresql:REL8_4_6:src/include/utils/errcodes.h","postgresql:REL8_4_7:src/include/utils/errcodes.h","postgresql:REL8_4_8:src/include/utils/errcodes.h","postgresql:REL8_4_9:src/include/utils/errcodes.h"],"notes":"The old definition path and same-tag documentation were locked for the observed 7.4..8.4 tags; this is a definition presence bound, not a runtime path or precise introducing commit.","scope":"pre9-definition-history","status":"definition_only"}]},"Evidence":[{"Kind":"cases","Ordinal":0,"ID":"fk_insert_missing_parent","ServerVersion":null,"Status":null,"Payload":{"assertions":["SQLSTATE is 23503","The foreign-key constraint and child table are identified","A valid parent and child row can be committed after rollback"],"case_id":"fk_insert_missing_parent","cleanup":"Drop the case schema with an owner connection.","has_snippet":true,"position":0,"preconditions":["A parent table and a child table with a NOT DEFERRABLE foreign key","The referenced key is absent"],"repair":"Create or select the intended parent before inserting the child; do not disable the constraint to hide the data error.","trigger":"Insert a child row whose parent key does not exist.","versions":["10","18"]}},{"Kind":"claims","Ordinal":0,"ID":"identity.class-and-condition","ServerVersion":null,"Status":null,"Payload":{"claim_id":"identity.class-and-condition","limits":"This establishes directory identity; it does not enumerate every foreign-key trigger path.","method":"Read the frozen errcodes.txt class and condition rows.","position":0,"runtime":[],"sources":["src.errcodes.18.6"],"statement":"23503 is the foreign_key_violation condition in Class 23 integrity_constraint_violation."}},{"Kind":"claims","Ordinal":1,"ID":"runtime.ri-report","ServerVersion":null,"Status":null,"Payload":{"claim_id":"runtime.ri-report","limits":"DETAIL is conditional on diagnostic visibility and the operation; parent deletion and deferred checks use different message shapes or timing.","method":"Trace ri_ReportViolation in the fixed source and compare the protocol diagnostics from fk_insert_missing_parent.","position":1,"runtime":[],"sources":["src.ri-triggers.18.6","doc.protocol.18"],"statement":"The ordinary missing-parent path reports insert or update on table \"%s\" violates foreign key constraint \"%s\", conditionally adds Key (%s)=(%s) is not present in table \"%s\"., and attaches the child table and constraint."}},{"Kind":"claims","Ordinal":2,"ID":"mechanism.parent-actions","ServerVersion":null,"Status":null,"Payload":{"claim_id":"mechanism.parent-actions","limits":"This is a source boundary for parent-key operations, not runtime evidence for the missing-parent child insert case. SQLSTATE and primary text depend on the action branch and release.","method":"Trace the fixed ri_ReportViolation branches for ordinary parent references and is_restrict, then compare the foreign-key action documentation.","position":2,"runtime":[],"sources":["src.ri-triggers.18.6","doc.ddl.18.6"],"statement":"NO ACTION parent checks use the ordinary foreign-key violation branch and can be deferred when the constraint is deferrable; the fixed PostgreSQL 18.6 RESTRICT branch uses ERRCODE_RESTRICT_VIOLATION (23001) with a RESTRICT-specific message and cannot be deferred."}},{"Kind":"claims","Ordinal":3,"ID":"runtime.transaction-recovery","ServerVersion":null,"Status":null,"Payload":{"claim_id":"runtime.transaction-recovery","limits":"The representative case uses an immediate foreign key and does not establish deferred timing, cascading actions, or concurrent parent creation.","method":"Run the missing-parent case on isolated PostgreSQL 18.6 and 10.21 targets and assert status transitions and the post-commit row.","position":3,"runtime":[],"sources":["doc.ddl.18.6"],"statement":"A failed child write leaves an explicit transaction INERROR until rollback; a valid parent and child can then be committed."}},{"Kind":"messages","Ordinal":0,"ID":"message.ri.insert-update","ServerVersion":null,"Status":null,"Payload":{"limits":"The detail is conditional; parent delete/update paths use different primary and detail templates.","message_id":"message.ri.insert-update","path":"","position":0,"raw":{"detail_template":"Key (%s)=(%s) is not present in table \"%s\".","id":"message.ri.insert-update","limits":"The detail is conditional; parent delete/update paths use different primary and detail templates.","primary_template":"insert or update on table \"%s\" violates foreign key constraint \"%s\"","severity_source":"E","sources":["src.ri-triggers.18.6"],"sqlstate":"23503"},"severity":"E","sources":["src.ri-triggers.18.6"],"templates":[{"kind":"primary","literal":"insert or update on table \" \" violates foreign key constraint \" \"","position":0,"role":"","template":"insert or update on table \"%s\" violates foreign key constraint \"%s\""},{"kind":"detail","literal":"Key ( )=( ) is not present in table \" \".","position":1,"role":"","template":"Key (%s)=(%s) is not present in table \"%s\"."}]}},{"Kind":"messages","Ordinal":1,"ID":"message.ri.parent","ServerVersion":null,"Status":null,"Payload":{"limits":"This is the ordinary parent-key update/delete branch; the fixed RESTRICT branch uses SQLSTATE 23001 and different wording.","message_id":"message.ri.parent","path":"","position":1,"raw":{"detail_template":"Key (%s)=(%s) is still referenced from table \"%s\".","id":"message.ri.parent","limits":"This is the ordinary parent-key update/delete branch; the fixed RESTRICT branch uses SQLSTATE 23001 and different wording.","primary_template":"update or delete on table \"%s\" violates foreign key constraint \"%s\" on table \"%s\"","severity_source":"explicit ERROR with ERRCODE_FOREIGN_KEY_VIOLATION","sources":["src.ri-triggers.18.6"],"sqlstate":"23503"},"severity":"explicit ERROR with ERRCODE_FOREIGN_KEY_VIOLATION","sources":["src.ri-triggers.18.6"],"templates":[{"kind":"primary","literal":"update or delete on table \" \" violates foreign key constraint \" \" on table \" \"","position":0,"role":"","template":"update or delete on table \"%s\" violates foreign key constraint \"%s\" on table \"%s\""},{"kind":"detail","literal":"Key ( )=( ) is still referenced from table \" \".","position":1,"role":"","template":"Key (%s)=(%s) is still referenced from table \"%s\"."}]}},{"Kind":"runtimes","Ordinal":0,"ID":"runtime.23503-final-20260909.latest","ServerVersion":"18.6 (Homebrew)","Status":"passed","Payload":{"cases":["fk_insert_missing_parent"],"limits":"","position":0,"raw":{"cases":["fk_insert_missing_parent"],"id":"runtime.23503-final-20260909.latest","raw":"verify/results/23503-final-20260909/latest/raw.jsonl","run_id":"23503-final-20260909","server_version":"18.6 (Homebrew)","server_version_num":180006,"status":"passed","summary":"verify/results/23503-final-20260909/latest/summary.json","target":"latest"},"run_id":"23503-final-20260909","runtime_id":"runtime.23503-final-20260909.latest","server_version":"18.6 (Homebrew)","status":"passed","target":"latest"}},{"Kind":"runtimes","Ordinal":1,"ID":"runtime.23503-final-20260909.pg10","ServerVersion":"10.21 (Debian 10.21-1.pgdg90+1)","Status":"passed","Payload":{"cases":["fk_insert_missing_parent"],"limits":"","position":1,"raw":{"cases":["fk_insert_missing_parent"],"id":"runtime.23503-final-20260909.pg10","image":"postgres@sha256:b2baf8998630663d21370da06387c950e587071bdd307ee34e661cdcc7442bcc","raw":"verify/results/23503-final-20260909/pg10/raw.jsonl","run_id":"23503-final-20260909","server_version":"10.21 (Debian 10.21-1.pgdg90+1)","server_version_num":100021,"status":"passed","summary":"verify/results/23503-final-20260909/pg10/summary.json","target":"pg10"},"run_id":"23503-final-20260909","runtime_id":"runtime.23503-final-20260909.pg10","server_version":"10.21 (Debian 10.21-1.pgdg90+1)","status":"passed","target":"pg10"}},{"Kind":"runtimes","Ordinal":2,"ID":"runtime.23503-explicit-begin-final-20260909.latest","ServerVersion":"18.6 (Homebrew)","Status":"passed","Payload":{"cases":["fk_insert_missing_parent"],"limits":"This rerun proves the page's explicit BEGIN around the post-rollback repair; it does not test deferred or cascading foreign keys.","position":2,"raw":{"cases":["fk_insert_missing_parent"],"id":"runtime.23503-explicit-begin-final-20260909.latest","limits":"This rerun proves the page's explicit BEGIN around the post-rollback repair; it does not test deferred or cascading foreign keys.","observed":{"repair_transaction":"BEGIN; INSERT parent; INSERT child; COMMIT","rows":[[1,99]],"sqlstate":"23503","status_after_error":"INERROR","status_after_rollback":"IDLE"},"raw":"verify/results/23503-explicit-begin-final-20260909/latest/raw.jsonl","raw_sha256":"448d0fb4e045829071281cbf3b41be2be070932288191012cc3b766a038f0f2d","run_id":"23503-explicit-begin-final-20260909","server_version":"18.6 (Homebrew)","server_version_num":180006,"status":"passed","summary":"verify/results/23503-explicit-begin-final-20260909/latest/summary.json","summary_sha256":"dcbbb3ede7e424622275a30b8e4ddee2e8e0dc71ea46a78aba1f9c40403626a0","target":"latest"},"run_id":"23503-explicit-begin-final-20260909","runtime_id":"runtime.23503-explicit-begin-final-20260909.latest","server_version":"18.6 (Homebrew)","status":"passed","target":"latest"}},{"Kind":"runtimes","Ordinal":3,"ID":"runtime.23503-explicit-begin-final-20260909.pg10","ServerVersion":"10.21 (Debian 10.21-1.pgdg90+1)","Status":"passed","Payload":{"cases":["fk_insert_missing_parent"],"limits":"This rerun proves the page's explicit BEGIN around the post-rollback repair; it does not test deferred or cascading foreign keys.","position":3,"raw":{"cases":["fk_insert_missing_parent"],"id":"runtime.23503-explicit-begin-final-20260909.pg10","image":"postgres@sha256:b2baf8998630663d21370da06387c950e587071bdd307ee34e661cdcc7442bcc","limits":"This rerun proves the page's explicit BEGIN around the post-rollback repair; it does not test deferred or cascading foreign keys.","observed":{"repair_transaction":"BEGIN; INSERT parent; INSERT child; COMMIT","rows":[[1,99]],"sqlstate":"23503","status_after_error":"INERROR","status_after_rollback":"IDLE"},"raw":"verify/results/23503-explicit-begin-final-20260909/pg10/raw.jsonl","raw_sha256":"0d3f8a56d5b50bb184ce791c5c88db1e1ddac4f43ba220829a773796c044f58e","run_id":"23503-explicit-begin-final-20260909","server_version":"10.21 (Debian 10.21-1.pgdg90+1)","server_version_num":100021,"status":"passed","summary":"verify/results/23503-explicit-begin-final-20260909/pg10/summary.json","summary_sha256":"c92079153f22913d9a75ccf5dbbe19d4983c75f553572cdc10e755d3fc8b943e","target":"pg10"},"run_id":"23503-explicit-begin-final-20260909","runtime_id":"runtime.23503-explicit-begin-final-20260909.pg10","server_version":"10.21 (Debian 10.21-1.pgdg90+1)","status":"passed","target":"pg10"}},{"Kind":"runtimes","Ordinal":4,"ID":"runtime.23503-registry-final-20260909.latest","ServerVersion":"18.6 (Homebrew)","Status":"passed","Payload":{"cases":["fk_insert_missing_parent"],"limits":"","position":4,"raw":{"cases":["fk_insert_missing_parent"],"id":"runtime.23503-registry-final-20260909.latest","observed":{"message_detail":"Key (parent_id)=(99) is not present in table \"parents\".","message_primary":"insert or update on table \"children\" violates foreign key constraint \"children_parent_fk\"","rows":[[1,99]],"source":"ri_triggers.c / ri_ReportViolation / line 2783","sqlstate":"23503","statuses":{"after_commit":"IDLE","after_error":"INERROR","after_rollback":"IDLE"}},"raw":"verify/results/23503-registry-final-20260909/latest/raw.jsonl","raw_sha256":"977b16fea3508fc6efef5a9d353500ae0036dfa28bab4e857eba86167a5b52af","run_id":"23503-registry-final-20260909","server_version":"18.6 (Homebrew)","server_version_num":180006,"snippet_registry":{"path":"verify/cases/23503/snippets.json","sha256":"63d0f78a47023e343cf8b38f4168021e68ccdd875bb64f35b5e42e68394779e3"},"status":"passed","summary":"verify/results/23503-registry-final-20260909/latest/summary.json","summary_sha256":"301bd9183ceb223bd5898315316ab5c666a89dc10c5b48333e54bcdafcab873a","target":"latest"},"run_id":"23503-registry-final-20260909","runtime_id":"runtime.23503-registry-final-20260909.latest","server_version":"18.6 (Homebrew)","status":"passed","target":"latest"}},{"Kind":"runtimes","Ordinal":5,"ID":"runtime.23503-registry-final-20260909.pg10","ServerVersion":"10.21 (Debian 10.21-1.pgdg90+1)","Status":"passed","Payload":{"cases":["fk_insert_missing_parent"],"limits":"","position":5,"raw":{"cases":["fk_insert_missing_parent"],"id":"runtime.23503-registry-final-20260909.pg10","image":"postgres@sha256:b2baf8998630663d21370da06387c950e587071bdd307ee34e661cdcc7442bcc","observed":{"message_detail":"Key (parent_id)=(99) is not present in table \"parents\".","message_primary":"insert or update on table \"children\" violates foreign key constraint \"children_parent_fk\"","rows":[[1,99]],"source":"ri_triggers.c / ri_ReportViolation / line 3266","sqlstate":"23503","statuses":{"after_commit":"IDLE","after_error":"INERROR","after_rollback":"IDLE"}},"raw":"verify/results/23503-registry-final-20260909/pg10/raw.jsonl","raw_sha256":"02bc2125919383ed4e9847d7cdf45e3ca235b325c5c36fa9d9e1984d27a45c5d","run_id":"23503-registry-final-20260909","server_version":"10.21 (Debian 10.21-1.pgdg90+1)","server_version_num":100021,"snippet_registry":{"path":"verify/cases/23503/snippets.json","sha256":"63d0f78a47023e343cf8b38f4168021e68ccdd875bb64f35b5e42e68394779e3"},"status":"passed","summary":"verify/results/23503-registry-final-20260909/pg10/summary.json","summary_sha256":"0aba93166977cc979499f62acee75df0f0b86587e3b0309795da0de2476209de","target":"pg10"},"run_id":"23503-registry-final-20260909","runtime_id":"runtime.23503-registry-final-20260909.pg10","server_version":"10.21 (Debian 10.21-1.pgdg90+1)","status":"passed","target":"pg10"}},{"Kind":"runtimes","Ordinal":6,"ID":"runtime.23503-fk-manual-final-20260909.latest","ServerVersion":"18.6 (Homebrew)","Status":"passed","Payload":{"cases":["fk_insert_missing_parent"],"limits":"This run proves that the registry BEGIN/ROLLBACK/BEGIN/COMMIT sequence executes with autocommit=True; it covers the single-parent foreign-key case.","position":6,"raw":{"cases":["fk_insert_missing_parent"],"id":"runtime.23503-fk-manual-final-20260909.latest","limits":"This run proves that the registry BEGIN/ROLLBACK/BEGIN/COMMIT sequence executes with autocommit=True; it covers the single-parent foreign-key case.","observed":{"connection_autocommit":true,"diagnostic":{"message_detail":"Key (parent_id)=(99) is not present in table \"parents\".","message_primary":"insert or update on table \"children\" violates foreign key constraint \"children_parent_fk\"","sqlstate":"23503"},"rows":[[1,99]],"statuses":{"after_commit":"IDLE","after_error":"INERROR","after_rollback":"IDLE"},"transaction_control":["BEGIN","ROLLBACK","BEGIN","COMMIT"]},"raw":"verify/results/23503-fk-manual-final-20260909/latest/raw.jsonl","raw_sha256":"442dbfa57497ce15440689645d531f493890d35e8841308ade267514244b68e5","run_id":"23503-fk-manual-final-20260909","server_version":"18.6 (Homebrew)","server_version_num":180006,"snippet_registry":{"path":"verify/cases/23503/snippets.json","sha256":"63d0f78a47023e343cf8b38f4168021e68ccdd875bb64f35b5e42e68394779e3"},"status":"passed","summary":"verify/results/23503-fk-manual-final-20260909/latest/summary.json","summary_sha256":"e3029aab946d6e097e1c741d918937583f4ae6c8f0af24e118667b50396bcddb","target":"latest"},"run_id":"23503-fk-manual-final-20260909","runtime_id":"runtime.23503-fk-manual-final-20260909.latest","server_version":"18.6 (Homebrew)","status":"passed","target":"latest"}},{"Kind":"runtimes","Ordinal":7,"ID":"runtime.23503-fk-manual-final-20260909.pg10","ServerVersion":"10.21 (Debian 10.21-1.pgdg90+1)","Status":"passed","Payload":{"cases":["fk_insert_missing_parent"],"limits":"This run proves that the registry BEGIN/ROLLBACK/BEGIN/COMMIT sequence executes with autocommit=True; it covers the single-parent foreign-key case.","position":7,"raw":{"cases":["fk_insert_missing_parent"],"id":"runtime.23503-fk-manual-final-20260909.pg10","image":"postgres@sha256:b2baf8998630663d21370da06387c950e587071bdd307ee34e661cdcc7442bcc","limits":"This run proves that the registry BEGIN/ROLLBACK/BEGIN/COMMIT sequence executes with autocommit=True; it covers the single-parent foreign-key case.","observed":{"connection_autocommit":true,"diagnostic":{"message_detail":"Key (parent_id)=(99) is not present in table \"parents\".","message_primary":"insert or update on table \"children\" violates foreign key constraint \"children_parent_fk\"","sqlstate":"23503"},"rows":[[1,99]],"statuses":{"after_commit":"IDLE","after_error":"INERROR","after_rollback":"IDLE"},"transaction_control":["BEGIN","ROLLBACK","BEGIN","COMMIT"]},"raw":"verify/results/23503-fk-manual-final-20260909/pg10/raw.jsonl","raw_sha256":"05887d0f8e900ab9230ac677b112119303e6de9d2bde0da7f743e1649bd213be","run_id":"23503-fk-manual-final-20260909","server_version":"10.21 (Debian 10.21-1.pgdg90+1)","server_version_num":100021,"snippet_registry":{"path":"verify/cases/23503/snippets.json","sha256":"63d0f78a47023e343cf8b38f4168021e68ccdd875bb64f35b5e42e68394779e3"},"status":"passed","summary":"verify/results/23503-fk-manual-final-20260909/pg10/summary.json","summary_sha256":"433729dd2e043777d52910ceb7ca71c437a06d0a746b42385f5a7c5411893e68","target":"pg10"},"run_id":"23503-fk-manual-final-20260909","runtime_id":"runtime.23503-fk-manual-final-20260909.pg10","server_version":"10.21 (Debian 10.21-1.pgdg90+1)","status":"passed","target":"pg10"}},{"Kind":"sources","Ordinal":0,"ID":"src.errcodes.18.6","ServerVersion":null,"Status":null,"Payload":{"commit":"724edf9bde9d356724ad384a2e196edc3c9f80f7","docs_url":"","kind":"","location":"lines 235-241","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"}},{"Kind":"sources","Ordinal":1,"ID":"src.ri-triggers.18.6","ServerVersion":null,"Status":null,"Payload":{"commit":"724edf9bde9d356724ad384a2e196edc3c9f80f7","docs_url":"","kind":"","location":"lines 2761-2809","path":"src/backend/utils/adt/ri_triggers.c","position":1,"sha256":"a3fed49fbda88fe0fe5bcf35eb019fced28596ae4046233f2acb2eb9f90ab1da","source_id":"src.ri-triggers.18.6","tag":"REL_18_6","url":"https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/adt/ri_triggers.c#L2761-L2809"}},{"Kind":"sources","Ordinal":2,"ID":"doc.ddl.18.6","ServerVersion":null,"Status":null,"Payload":{"commit":"724edf9bde9d356724ad384a2e196edc3c9f80f7","docs_url":"","kind":"","location":"foreign-key constraints","path":"doc/src/sgml/ddl.sgml","position":2,"sha256":"ce1919d9236f2e71672660e1a347146472e966e4d19b77fde5ae345dd1db6ec7","source_id":"doc.ddl.18.6","tag":"REL_18_6","url":"https://www.postgresql.org/docs/18/ddl-constraints.html#DDL-CONSTRAINTS-FK"}},{"Kind":"sources","Ordinal":3,"ID":"doc.protocol.18","ServerVersion":null,"Status":null,"Payload":{"commit":"724edf9bde9d356724ad384a2e196edc3c9f80f7","docs_url":"","kind":"","location":"ErrorResponse fields","path":"doc/src/sgml/protocol.sgml","position":3,"sha256":"745339e07ebbc2bb67d98b258e25772ada644ef26011e3cd6b3fcbb435235f89","source_id":"doc.protocol.18","tag":"REL_18_6","url":"https://www.postgresql.org/docs/18/protocol-error-fields.html"}}]}
