{"Entry":{"collection":"sqlstate","key":"40P01","name":"40P01","aliases":[],"metadata":{"aliases":[],"case_count":1,"class_code":"40","condition_name":"deadlock_detected","condition_names":["deadlock_detected"],"content_hash":"58abd6ea6af749da1125d7de68cfa1904292d1d131385465dbe5e409fb911a87","depth":"full","editorial_review":"reviewed","evidence_tier":"observed_runtime","imported_at":"2026-09-30T17:45:27.498451+08:00","introduced":null,"known_present_by":"7.4","macros":["ERRCODE_T_R_DEADLOCK_DETECTED"],"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_T_R_DEADLOCK_DETECTED","removed":null,"runtime_verification":"passed","severity_classes":["E"],"snippet_count":1,"source_rev":"english-manuals:72247742d92f7f3aaf91240f5e22f29a345fd3f3acdbd0cbe853b5995f934d21","sqlstate":"40P01","status":"active","summary_zh":"检测到死锁，事务因等待环被选为受害者中止。"}},"Definition":{"Collection":"sqlstate","Key":"40P01","SourceDatabase":"center","Version":"18","SourceTable":"sqlstate","SourceKey":"40P01","SourceRevision":"english-manuals:72247742d92f7f3aaf91240f5e22f29a345fd3f3acdbd0cbe853b5995f934d21","Facts":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"56dacf78e618ff0fd8c533e05db597b80d7ebbad7f8e512a888217d0640aa328","slug":"18"},"lang":"en","sqlstate":"40P01"},"ManualEvidence":{"doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"56dacf78e618ff0fd8c533e05db597b80d7ebbad7f8e512a888217d0640aa328","slug":"18"}},"MeasuredEvidence":{}},"Text":{"Collection":"sqlstate","Key":"40P01","SourceDatabase":"center","Version":"","Locale":"en","Title":"40P01 — deadlock_detected","Summary":"40P01 is PostgreSQL's deadlockdetected condition in Class 40, transactionrollback. It means that the lock manager found a cycle in which transactions are waiting for one another, so PostgreSQL chose a victim and aborted its transaction.","BodyHTML":"\u003ch2\u003eAt a glance {#at-a-glance}\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003e40P01\u003c/code\u003e is PostgreSQL\u0026#39;s \u003ccode\u003edeadlock_detected\u003c/code\u003e condition in Class 40, \u003ccode\u003etransaction_rollback\u003c/code\u003e. It means that the lock manager found a cycle in which transactions are waiting for one another, so PostgreSQL chose a victim and aborted its transaction.\u003c/p\u003e\n\u003cp\u003eThe primary message is \u003ccode\u003edeadlock detected\u003c/code\u003e. The server may add a dynamically assembled wait graph in \u003ccode\u003eDETAIL\u003c/code\u003e, a hint to consult the server log, and a context naming the statement that was interrupted. Process IDs, transaction IDs, and the exact wait graph are run-specific; branch on SQLSTATE and retain the structured fields rather than matching those values.\u003c/p\u003e\n\u003cp\u003eThe representative case first lets two sessions hold opposite row locks, then uses a \u003ccode\u003ethreading.Barrier\u003c/code\u003e to release both cross-row requests while an independent observer samples \u003ccode\u003epg_stat_activity\u003c/code\u003e for \u003ccode\u003ewait_event_type=Lock\u003c/code\u003e. The observer does not release the requests. After one session receives \u003ccode\u003e40P01\u003c/code\u003e, its transaction is \u003ccode\u003eINERROR\u003c/code\u003e; the surviving session completes, and both sessions are then \u003ccode\u003eIDLE\u003c/code\u003e. A fresh transaction takes both row locks in order and commits the complete retry.\u003c/p\u003e\n\u003cp\u003eRun \u003ccode\u003e40P01-manual-boundary-final-20260909\u003c/code\u003e passed on PostgreSQL 18.6 and isolated PostgreSQL 10.21. Per-target assertions and structured observations 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 deadlock requires a cycle in the wait-for graph. A common form is session A locking row 1 and requesting row 2 while session B locks row 2 and requests row 1. PostgreSQL\u0026#39;s deadlock detector examines the lock graph after the configured deadlock timeout and reports the condition from \u003ccode\u003eDeadLockReport\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe error identifies a transaction coordination failure, not a damaged row. The victim\u0026#39;s whole transaction is aborted. The other transaction may continue after the detector breaks the cycle, but its successful outcome does not automatically mean the victim\u0026#39;s intended work was applied.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e40P01\u003c/code\u003e is distinct from a lock wait that eventually succeeds and from \u003ccode\u003e57014\u003c/code\u003e caused by a statement timeout. The observed \u003ccode\u003epg_stat_activity\u003c/code\u003e wait is evidence of the cycle\u0026#39;s setup; the server\u0026#39;s \u003ccode\u003edeadlock detected\u003c/code\u003e response is the decisive condition.\u003c/p\u003e\n\u003ch2\u003eMessages and diagnostics {#messages}\u003c/h2\u003e\n\u003cp\u003eThe following schedule is the representative operation. Run the session A and B sections on separate connections; each session first holds one row, the barrier then releases both cross-row requests, and an independent observer samples both backends while the requests wait. The observer is not the release condition.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eCREATE TABLE locks(id integer PRIMARY KEY, marker text NOT NULL);\nINSERT INTO locks VALUES (1, \u0026#39;seed-1\u0026#39;), (2, \u0026#39;seed-2\u0026#39;);\n\n-- Session A: begin, set deadlock_timeout, and lock id = 1.\nBEGIN;\nSET deadlock_timeout = \u0026#39;100ms\u0026#39;;\nUPDATE locks SET marker = \u0026#39;first-1\u0026#39; WHERE id = 1;\n\n-- Session B: begin, set deadlock_timeout, and lock id = 2.\nBEGIN;\nSET deadlock_timeout = \u0026#39;100ms\u0026#39;;\nUPDATE locks SET marker = \u0026#39;second-2\u0026#39; WHERE id = 2;\n\n-- An explicit barrier releases both requests into the lock cycle.\nUPDATE locks SET marker = \u0026#39;first-2\u0026#39; WHERE id = 2;\nUPDATE locks SET marker = \u0026#39;second-1\u0026#39; WHERE id = 1;\n\n-- The victim must ROLLBACK; the survivor can COMMIT.\nROLLBACK;\nCOMMIT;\n\n-- Fresh retry connection: take locks in the same order and verify both rows.\nBEGIN;\nUPDATE locks SET marker = \u0026#39;retry-1\u0026#39; WHERE id = 1;\nUPDATE locks SET marker = \u0026#39;retry-2\u0026#39; WHERE id = 2;\nCOMMIT;\nSELECT id, marker FROM locks ORDER BY id;\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePostgreSQL 18.6 returned this shape for the victim:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eSQLSTATE: 40P01\nseverity: ERROR\nmessage_primary: deadlock detected\nmessage_detail: Process \u0026lt;pid-a\u0026gt; waits for ShareLock on transaction \u0026lt;xid-b\u0026gt;; blocked by process \u0026lt;pid-b\u0026gt;.\nProcess \u0026lt;pid-b\u0026gt; waits for ShareLock on transaction \u0026lt;xid-a\u0026gt;; blocked by process \u0026lt;pid-a\u0026gt;.\nmessage_hint: See server log for query details.\ncontext: while updating tuple (0,2) in relation \u0026#34;locks\u0026#34;\nsource: deadlock.c / DeadLockReport / line 1138\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe PG10 run produced the same primary message and fields, with a version-specific source line. The detail is assembled from the live wait graph, so its process and transaction identifiers are intentionally represented as run-specific values here. The hint is not a claim that the client always receives a server log entry; it directs investigation to that log when configured.\u003c/p\u003e\n\u003ch2\u003eDiagnosis {#diagnosis}\u003c/h2\u003e\n\u003cp\u003eRecord SQLSTATE, severity, primary message, detail, hint, context, the failed statement, backend PIDs, and transaction status. Inspect \u003ccode\u003epg_stat_activity\u003c/code\u003e and relevant lock views while the wait is active. A useful observation includes \u003ccode\u003ewait_event_type=Lock\u003c/code\u003e, the wait event, the current query, and the participating PIDs; a sleep by itself cannot establish a deadlock.\u003c/p\u003e\n\u003cp\u003eBuild the lock order from the actual application code and all paths that can touch the same rows or advisory locks. Check whether a trigger, foreign key, index, or background worker acquired an additional lock. \u003ccode\u003edeadlock_timeout\u003c/code\u003e controls when PostgreSQL runs detection; increasing it changes detection latency and does not remove the cycle.\u003c/p\u003e\n\u003cp\u003eAfter the error, the victim connection is not ready for unrelated commands: it is \u003ccode\u003eINERROR\u003c/code\u003e until \u003ccode\u003eROLLBACK\u003c/code\u003e. The survivor may be \u003ccode\u003eINTRANS\u003c/code\u003e until its commit. The runner observed both return to \u003ccode\u003eIDLE\u003c/code\u003e after explicit cleanup and verified the rows before a retry.\u003c/p\u003e\n\u003ch2\u003eResponse and repair {#response}\u003c/h2\u003e\n\u003cp\u003eRollback the victim transaction and release its locks. Then choose a complete repair:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMake every code path acquire the same set of locks in a consistent order, preferably by ordering keys explicitly.\u003c/li\u003e\n\u003cli\u003eKeep the transaction short and avoid waiting for external work while holding database locks.\u003c/li\u003e\n\u003cli\u003eRetry the whole transaction, including reads and lock acquisition, only when the operation is safe to repeat and its result is idempotent.\u003c/li\u003e\n\u003cli\u003eVerify the committed business result after the retry; a survivor\u0026#39;s partial update is not proof that the victim\u0026#39;s work succeeded.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe representative repair took row 1 and row 2 in order, committed \u003ccode\u003eretry-1\u003c/code\u003e and \u003ccode\u003eretry-2\u003c/code\u003e, and read both rows with the connection \u003ccode\u003eIDLE\u003c/code\u003e. A bounded retry budget and an application-level idempotency key are still needed in production; the SQLSTATE alone cannot decide whether repeating an operation is safe.\u003c/p\u003e\n\u003ch2\u003eVersions and boundaries {#versions}\u003c/h2\u003e\n\u003cp\u003eThe catalogue has a definition-presence observation for \u003ccode\u003e40P01\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. The class title changed between the 9.0 header view and the 9.1 text definition; that catalogue observation does not establish a code introduction date. The condition row itself has no recorded definition change in the scanned range.\u003c/p\u003e\n\u003cp\u003eThe two-session case passed on PostgreSQL 18.6 and 10.21. Detector timing, lock types, and detail text depend on the workload and settings; the compatibility contract used here is SQLSTATE plus the transaction rollback requirement, not a fixed process-ID detail string.\u003c/p\u003e\n\u003ch2\u003eRelated {#related}\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"/wiki/sqlstate/40001/\" rel=\"nofollow\"\u003e\u003ccode\u003e40001\u003c/code\u003e — \u003ccode\u003eserialization_failure\u003c/code\u003e\u003c/a\u003e also requires a complete transaction retry from a fresh snapshot. \u003ca href=\"/wiki/sqlstate/57014/\" rel=\"nofollow\"\u003e\u003ccode\u003e57014\u003c/code\u003e — \u003ccode\u003equery_canceled\u003c/code\u003e\u003c/a\u003e reports cancellation rather than a lock cycle. \u003ca href=\"/wiki/sqlstate/23503/\" rel=\"nofollow\"\u003e\u003ccode\u003e23503\u003c/code\u003e — \u003ccode\u003eforeign_key_violation\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"/wiki/sqlstate/23505/\" rel=\"nofollow\"\u003e\u003ccode\u003e23505\u003c/code\u003e — \u003ccode\u003eunique_violation\u003c/code\u003e\u003c/a\u003e are integrity conditions that can occur inside a transaction whose lock ordering needs review. \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 state after the victim\u0026#39;s transaction is left aborted.\u003c/p\u003e\n\u003ch2\u003eSources {#sources}\u003c/h2\u003e\n\u003cp\u003eStructured evidence is recorded in the \u003ca href=\"#sources\" rel=\"nofollow\"\u003epublic evidence JSON\u003c/a\u003e. All source records use PostgreSQL commit \u003ccode\u003e724edf9bde9d356724ad384a2e196edc3c9f80f7\u003c/code\u003e; run records retain exact target IDs and 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#L329-L334\" rel=\"nofollow\"\u003e\u003ccode\u003eerrcodes.txt\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esrc.deadlock.18.6\u003c/code\u003e — \u003ca href=\"https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/storage/lmgr/deadlock.c#L1071-L1138\" rel=\"nofollow\"\u003e\u003ccode\u003edeadlock.c\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edoc.mvcc.18\u003c/code\u003e — \u003ca href=\"/docs/18/mvcc-serialization-failure-handling.html\" rel=\"nofollow\"\u003eDeadlocks and serialization failures\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRuntime: \u003ccode\u003e40P01-manual-boundary-final-20260909\u003c/code\u003e on latest and pg10; structured observations are in the \u003ca href=\"#sources\" rel=\"nofollow\"\u003epublic evidence JSON\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n","SourceRevision":"english-manuals:72247742d92f7f3aaf91240f5e22f29a345fd3f3acdbd0cbe853b5995f934d21","ContentHash":"0bd6a47606024b3c060a5fa9eb3f5bb8a11fbf7c6c066f0b7aaa674ed2a372bb","Payload":{"body_md":"\n## At a glance {#at-a-glance}\n\n`40P01` is PostgreSQL's `deadlock_detected` condition in Class 40, `transaction_rollback`. It means that the lock manager found a cycle in which transactions are waiting for one another, so PostgreSQL chose a victim and aborted its transaction.\n\nThe primary message is `deadlock detected`. The server may add a dynamically assembled wait graph in `DETAIL`, a hint to consult the server log, and a context naming the statement that was interrupted. Process IDs, transaction IDs, and the exact wait graph are run-specific; branch on SQLSTATE and retain the structured fields rather than matching those values.\n\nThe representative case first lets two sessions hold opposite row locks, then uses a `threading.Barrier` to release both cross-row requests while an independent observer samples `pg_stat_activity` for `wait_event_type=Lock`. The observer does not release the requests. After one session receives `40P01`, its transaction is `INERROR`; the surviving session completes, and both sessions are then `IDLE`. A fresh transaction takes both row locks in order and commits the complete retry.\n\nRun `40P01-manual-boundary-final-20260909` passed on PostgreSQL 18.6 and isolated PostgreSQL 10.21. Per-target assertions and structured observations are retained in the [public evidence JSON](#sources).\n\n\n## Meaning and trigger paths {#meaning}\n\nA deadlock requires a cycle in the wait-for graph. A common form is session A locking row 1 and requesting row 2 while session B locks row 2 and requests row 1. PostgreSQL's deadlock detector examines the lock graph after the configured deadlock timeout and reports the condition from `DeadLockReport`.\n\nThe error identifies a transaction coordination failure, not a damaged row. The victim's whole transaction is aborted. The other transaction may continue after the detector breaks the cycle, but its successful outcome does not automatically mean the victim's intended work was applied.\n\n`40P01` is distinct from a lock wait that eventually succeeds and from `57014` caused by a statement timeout. The observed `pg_stat_activity` wait is evidence of the cycle's setup; the server's `deadlock detected` response is the decisive condition.\n\n## Messages and diagnostics {#messages}\n\nThe following schedule is the representative operation. Run the session A and B sections on separate connections; each session first holds one row, the barrier then releases both cross-row requests, and an independent observer samples both backends while the requests wait. The observer is not the release condition.\n\n```sql\nCREATE TABLE locks(id integer PRIMARY KEY, marker text NOT NULL);\nINSERT INTO locks VALUES (1, 'seed-1'), (2, 'seed-2');\n\n-- Session A: begin, set deadlock_timeout, and lock id = 1.\nBEGIN;\nSET deadlock_timeout = '100ms';\nUPDATE locks SET marker = 'first-1' WHERE id = 1;\n\n-- Session B: begin, set deadlock_timeout, and lock id = 2.\nBEGIN;\nSET deadlock_timeout = '100ms';\nUPDATE locks SET marker = 'second-2' WHERE id = 2;\n\n-- An explicit barrier releases both requests into the lock cycle.\nUPDATE locks SET marker = 'first-2' WHERE id = 2;\nUPDATE locks SET marker = 'second-1' WHERE id = 1;\n\n-- The victim must ROLLBACK; the survivor can COMMIT.\nROLLBACK;\nCOMMIT;\n\n-- Fresh retry connection: take locks in the same order and verify both rows.\nBEGIN;\nUPDATE locks SET marker = 'retry-1' WHERE id = 1;\nUPDATE locks SET marker = 'retry-2' WHERE id = 2;\nCOMMIT;\nSELECT id, marker FROM locks ORDER BY id;\n```\n\nPostgreSQL 18.6 returned this shape for the victim:\n\n```text\nSQLSTATE: 40P01\nseverity: ERROR\nmessage_primary: deadlock detected\nmessage_detail: Process \u003cpid-a\u003e waits for ShareLock on transaction \u003cxid-b\u003e; blocked by process \u003cpid-b\u003e.\nProcess \u003cpid-b\u003e waits for ShareLock on transaction \u003cxid-a\u003e; blocked by process \u003cpid-a\u003e.\nmessage_hint: See server log for query details.\ncontext: while updating tuple (0,2) in relation \"locks\"\nsource: deadlock.c / DeadLockReport / line 1138\n```\n\nThe PG10 run produced the same primary message and fields, with a version-specific source line. The detail is assembled from the live wait graph, so its process and transaction identifiers are intentionally represented as run-specific values here. The hint is not a claim that the client always receives a server log entry; it directs investigation to that log when configured.\n\n## Diagnosis {#diagnosis}\n\nRecord SQLSTATE, severity, primary message, detail, hint, context, the failed statement, backend PIDs, and transaction status. Inspect `pg_stat_activity` and relevant lock views while the wait is active. A useful observation includes `wait_event_type=Lock`, the wait event, the current query, and the participating PIDs; a sleep by itself cannot establish a deadlock.\n\nBuild the lock order from the actual application code and all paths that can touch the same rows or advisory locks. Check whether a trigger, foreign key, index, or background worker acquired an additional lock. `deadlock_timeout` controls when PostgreSQL runs detection; increasing it changes detection latency and does not remove the cycle.\n\nAfter the error, the victim connection is not ready for unrelated commands: it is `INERROR` until `ROLLBACK`. The survivor may be `INTRANS` until its commit. The runner observed both return to `IDLE` after explicit cleanup and verified the rows before a retry.\n\n## Response and repair {#response}\n\nRollback the victim transaction and release its locks. Then choose a complete repair:\n\n- Make every code path acquire the same set of locks in a consistent order, preferably by ordering keys explicitly.\n- Keep the transaction short and avoid waiting for external work while holding database locks.\n- Retry the whole transaction, including reads and lock acquisition, only when the operation is safe to repeat and its result is idempotent.\n- Verify the committed business result after the retry; a survivor's partial update is not proof that the victim's work succeeded.\n\nThe representative repair took row 1 and row 2 in order, committed `retry-1` and `retry-2`, and read both rows with the connection `IDLE`. A bounded retry budget and an application-level idempotency key are still needed in production; the SQLSTATE alone cannot decide whether repeating an operation is safe.\n\n## Versions and boundaries {#versions}\n\nThe catalogue has a definition-presence observation for `40P01` 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. The class title changed between the 9.0 header view and the 9.1 text definition; that catalogue observation does not establish a code introduction date. The condition row itself has no recorded definition change in the scanned range.\n\nThe two-session case passed on PostgreSQL 18.6 and 10.21. Detector timing, lock types, and detail text depend on the workload and settings; the compatibility contract used here is SQLSTATE plus the transaction rollback requirement, not a fixed process-ID detail string.\n\n## Related {#related}\n\n[`40001` — `serialization_failure`](/wiki/sqlstate/40001/) also requires a complete transaction retry from a fresh snapshot. [`57014` — `query_canceled`](/wiki/sqlstate/57014/) reports cancellation rather than a lock cycle. [`23503` — `foreign_key_violation`](/wiki/sqlstate/23503/) and [`23505` — `unique_violation`](/wiki/sqlstate/23505/) are integrity conditions that can occur inside a transaction whose lock ordering needs review. [`25P02` — `in_failed_sql_transaction`](/wiki/sqlstate/25P02/) is the follow-on state after the victim's transaction is left aborted.\n\n## Sources {#sources}\n\nStructured evidence is recorded in the [public evidence JSON](#sources). All source records use PostgreSQL commit `724edf9bde9d356724ad384a2e196edc3c9f80f7`; run records retain exact target IDs and structured observations.\n\n- `src.errcodes.18.6` — [`errcodes.txt`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt#L329-L334)\n- `src.deadlock.18.6` — [`deadlock.c`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/storage/lmgr/deadlock.c#L1071-L1138)\n- `doc.mvcc.18` — [Deadlocks and serialization failures](/docs/18/mvcc-serialization-failure-handling.html)\n- Runtime: `40P01-manual-boundary-final-20260909` on latest and pg10; structured observations are in the [public evidence JSON](#sources)\n","description":"PostgreSQL reports SQLSTATE 40P01 when transactions form a lock cycle. Roll back the victim, keep lock order consistent, and retry the complete operation only when its business semantics permit it.","is_stale":false,"name":"","sections":[{"anchor":"at-a-glance","heading":"At a glance","html":"\u003cp\u003e\u003ccode\u003e40P01\u003c/code\u003e is PostgreSQL's \u003ccode\u003edeadlock_detected\u003c/code\u003e condition in Class 40, \u003ccode\u003etransaction_rollback\u003c/code\u003e. It means that the lock manager found a cycle in which transactions are waiting for one another, so PostgreSQL chose a victim and aborted its transaction.\u003c/p\u003e\n\u003cp\u003eThe primary message is \u003ccode\u003edeadlock detected\u003c/code\u003e. The server may add a dynamically assembled wait graph in \u003ccode\u003eDETAIL\u003c/code\u003e, a hint to consult the server log, and a context naming the statement that was interrupted. Process IDs, transaction IDs, and the exact wait graph are run-specific; branch on SQLSTATE and retain the structured fields rather than matching those values.\u003c/p\u003e\n\u003cp\u003eThe representative case first lets two sessions hold opposite row locks, then uses a \u003ccode\u003ethreading.Barrier\u003c/code\u003e to release both cross-row requests while an independent observer samples \u003ccode\u003epg_stat_activity\u003c/code\u003e for \u003ccode\u003ewait_event_type=Lock\u003c/code\u003e. The observer does not release the requests. After one session receives \u003ccode\u003e40P01\u003c/code\u003e, its transaction is \u003ccode\u003eINERROR\u003c/code\u003e; the surviving session completes, and both sessions are then \u003ccode\u003eIDLE\u003c/code\u003e. A fresh transaction takes both row locks in order and commits the complete retry.\u003c/p\u003e\n\u003cp\u003eRun \u003ccode\u003e40P01-manual-boundary-final-20260909\u003c/code\u003e passed on PostgreSQL 18.6 and isolated PostgreSQL 10.21. Per-target assertions and structured observations 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 deadlock requires a cycle in the wait-for graph. A common form is session A locking row 1 and requesting row 2 while session B locks row 2 and requests row 1. PostgreSQL's deadlock detector examines the lock graph after the configured deadlock timeout and reports the condition from \u003ccode\u003eDeadLockReport\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe error identifies a transaction coordination failure, not a damaged row. The victim's whole transaction is aborted. The other transaction may continue after the detector breaks the cycle, but its successful outcome does not automatically mean the victim's intended work was applied.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e40P01\u003c/code\u003e is distinct from a lock wait that eventually succeeds and from \u003ccode\u003e57014\u003c/code\u003e caused by a statement timeout. The observed \u003ccode\u003epg_stat_activity\u003c/code\u003e wait is evidence of the cycle's setup; the server's \u003ccode\u003edeadlock detected\u003c/code\u003e response is the decisive condition.\u003c/p\u003e"},{"anchor":"messages","heading":"Messages and diagnostics","html":"\u003cp\u003eThe following schedule is the representative operation. Run the session A and B sections on separate connections; each session first holds one row, the barrier then releases both cross-row requests, and an independent observer samples both backends while the requests wait. The observer is not the release condition.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-sql\"\u003eCREATE TABLE locks(id integer PRIMARY KEY, marker text NOT NULL);\nINSERT INTO locks VALUES (1, 'seed-1'), (2, 'seed-2');\n\n-- Session A: begin, set deadlock_timeout, and lock id = 1.\nBEGIN;\nSET deadlock_timeout = '100ms';\nUPDATE locks SET marker = 'first-1' WHERE id = 1;\n\n-- Session B: begin, set deadlock_timeout, and lock id = 2.\nBEGIN;\nSET deadlock_timeout = '100ms';\nUPDATE locks SET marker = 'second-2' WHERE id = 2;\n\n-- An explicit barrier releases both requests into the lock cycle.\nUPDATE locks SET marker = 'first-2' WHERE id = 2;\nUPDATE locks SET marker = 'second-1' WHERE id = 1;\n\n-- The victim must ROLLBACK; the survivor can COMMIT.\nROLLBACK;\nCOMMIT;\n\n-- Fresh retry connection: take locks in the same order and verify both rows.\nBEGIN;\nUPDATE locks SET marker = 'retry-1' WHERE id = 1;\nUPDATE locks SET marker = 'retry-2' WHERE id = 2;\nCOMMIT;\nSELECT id, marker FROM locks ORDER BY id;\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePostgreSQL 18.6 returned this shape for the victim:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-text\"\u003eSQLSTATE: 40P01\nseverity: ERROR\nmessage_primary: deadlock detected\nmessage_detail: Process \u0026lt;pid-a\u0026gt; waits for ShareLock on transaction \u0026lt;xid-b\u0026gt;; blocked by process \u0026lt;pid-b\u0026gt;.\nProcess \u0026lt;pid-b\u0026gt; waits for ShareLock on transaction \u0026lt;xid-a\u0026gt;; blocked by process \u0026lt;pid-a\u0026gt;.\nmessage_hint: See server log for query details.\ncontext: while updating tuple (0,2) in relation \u0026quot;locks\u0026quot;\nsource: deadlock.c / DeadLockReport / line 1138\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe PG10 run produced the same primary message and fields, with a version-specific source line. The detail is assembled from the live wait graph, so its process and transaction identifiers are intentionally represented as run-specific values here. The hint is not a claim that the client always receives a server log entry; it directs investigation to that log when configured.\u003c/p\u003e"},{"anchor":"diagnosis","heading":"Diagnosis","html":"\u003cp\u003eRecord SQLSTATE, severity, primary message, detail, hint, context, the failed statement, backend PIDs, and transaction status. Inspect \u003ccode\u003epg_stat_activity\u003c/code\u003e and relevant lock views while the wait is active. A useful observation includes \u003ccode\u003ewait_event_type=Lock\u003c/code\u003e, the wait event, the current query, and the participating PIDs; a sleep by itself cannot establish a deadlock.\u003c/p\u003e\n\u003cp\u003eBuild the lock order from the actual application code and all paths that can touch the same rows or advisory locks. Check whether a trigger, foreign key, index, or background worker acquired an additional lock. \u003ccode\u003edeadlock_timeout\u003c/code\u003e controls when PostgreSQL runs detection; increasing it changes detection latency and does not remove the cycle.\u003c/p\u003e\n\u003cp\u003eAfter the error, the victim connection is not ready for unrelated commands: it is \u003ccode\u003eINERROR\u003c/code\u003e until \u003ccode\u003eROLLBACK\u003c/code\u003e. The survivor may be \u003ccode\u003eINTRANS\u003c/code\u003e until its commit. The runner observed both return to \u003ccode\u003eIDLE\u003c/code\u003e after explicit cleanup and verified the rows before a retry.\u003c/p\u003e"},{"anchor":"response","heading":"Response and repair","html":"\u003cp\u003eRollback the victim transaction and release its locks. Then choose a complete repair:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMake every code path acquire the same set of locks in a consistent order, preferably by ordering keys explicitly.\u003c/li\u003e\n\u003cli\u003eKeep the transaction short and avoid waiting for external work while holding database locks.\u003c/li\u003e\n\u003cli\u003eRetry the whole transaction, including reads and lock acquisition, only when the operation is safe to repeat and its result is idempotent.\u003c/li\u003e\n\u003cli\u003eVerify the committed business result after the retry; a survivor's partial update is not proof that the victim's work succeeded.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe representative repair took row 1 and row 2 in order, committed \u003ccode\u003eretry-1\u003c/code\u003e and \u003ccode\u003eretry-2\u003c/code\u003e, and read both rows with the connection \u003ccode\u003eIDLE\u003c/code\u003e. A bounded retry budget and an application-level idempotency key are still needed in production; the SQLSTATE alone cannot decide whether repeating an operation is safe.\u003c/p\u003e"},{"anchor":"versions","heading":"Versions and boundaries","html":"\u003cp\u003eThe catalogue has a definition-presence observation for \u003ccode\u003e40P01\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. The class title changed between the 9.0 header view and the 9.1 text definition; that catalogue observation does not establish a code introduction date. The condition row itself has no recorded definition change in the scanned range.\u003c/p\u003e\n\u003cp\u003eThe two-session case passed on PostgreSQL 18.6 and 10.21. Detector timing, lock types, and detail text depend on the workload and settings; the compatibility contract used here is SQLSTATE plus the transaction rollback requirement, not a fixed process-ID detail string.\u003c/p\u003e"},{"anchor":"related","heading":"Related","html":"\u003cp\u003e\u003ca href=\"/wiki/sqlstate/40001/\"\u003e\u003ccode\u003e40001\u003c/code\u003e — \u003ccode\u003eserialization_failure\u003c/code\u003e\u003c/a\u003e also requires a complete transaction retry from a fresh snapshot. \u003ca href=\"/wiki/sqlstate/57014/\"\u003e\u003ccode\u003e57014\u003c/code\u003e — \u003ccode\u003equery_canceled\u003c/code\u003e\u003c/a\u003e reports cancellation rather than a lock cycle. \u003ca href=\"/wiki/sqlstate/23503/\"\u003e\u003ccode\u003e23503\u003c/code\u003e — \u003ccode\u003eforeign_key_violation\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"/wiki/sqlstate/23505/\"\u003e\u003ccode\u003e23505\u003c/code\u003e — \u003ccode\u003eunique_violation\u003c/code\u003e\u003c/a\u003e are integrity conditions that can occur inside a transaction whose lock ordering needs review. \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 state after the victim's transaction is left aborted.\u003c/p\u003e"},{"anchor":"sources","heading":"Sources","html":"\u003cp\u003eStructured evidence is recorded in the \u003ca href=\"#sources\"\u003epublic evidence JSON\u003c/a\u003e. All source records use PostgreSQL commit \u003ccode\u003e724edf9bde9d356724ad384a2e196edc3c9f80f7\u003c/code\u003e; run records retain exact target IDs and 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#L329-L334\"\u003e\u003ccode\u003eerrcodes.txt\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esrc.deadlock.18.6\u003c/code\u003e — \u003ca href=\"https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/storage/lmgr/deadlock.c#L1071-L1138\"\u003e\u003ccode\u003edeadlock.c\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edoc.mvcc.18\u003c/code\u003e — \u003ca href=\"/docs/18/mvcc-serialization-failure-handling.html\"\u003eDeadlocks and serialization failures\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRuntime: \u003ccode\u003e40P01-manual-boundary-final-20260909\u003c/code\u003e on latest and pg10; structured observations are in the \u003ca href=\"#sources\"\u003epublic evidence JSON\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e"}],"summary":"40P01 is PostgreSQL's deadlockdetected condition in Class 40, transactionrollback. It means that the lock manager found a cycle in which transactions are waiting for one another, so PostgreSQL chose a victim and aborted its transaction.","title":"40P01 — deadlock_detected","translation_source_rev":"5ccc8baf329df02acc0732c5dc14a6fa0863d6cf0efe0a9743838bd9803c20ff"}},"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":"40","class_name":"Transaction Rollback","condition_name":"deadlock_detected","condition_names":["deadlock_detected"],"definition_changes":[],"english_manuals":{"10":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"9607b57e9f639b61785677ba4d226f5889fe1d19c8bf55a3337691899a9073cd","slug":"10"},"lang":"en","sqlstate":"40P01"},"11":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"3a024e38263ad77de228eed7930b842b42dc1d5cab9ca3727be8eed872ec9539","slug":"11"},"lang":"en","sqlstate":"40P01"},"12":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"1444bd6a138537cd75be88a220ee9472ac528f0cfc58758e49636d85455efe98","slug":"12"},"lang":"en","sqlstate":"40P01"},"13":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"4a3ef8af218e5736dfde8660ba609e84233b6b3bac7e0210ff8724cf1b27b2db","slug":"13"},"lang":"en","sqlstate":"40P01"},"14":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"1c12e83304e0f4ff64c9d98ca5e3007df6756932ed19867a4fa0e0650f6c5751","slug":"14"},"lang":"en","sqlstate":"40P01"},"15":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"2161f58f6e87f6535b3b1f3d4661427bb6765f4f6b074fcc16fac97594b50599","slug":"15"},"lang":"en","sqlstate":"40P01"},"16":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"928e705933d7c3d018ae3fba9d800b34e6325746d157339dce878473c519d100","slug":"16"},"lang":"en","sqlstate":"40P01"},"17":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"868135520af87351e3ea1ba42656111cbd2d157d98e1fef05ea158ac5729d8b1","slug":"17"},"lang":"en","sqlstate":"40P01"},"18":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"56dacf78e618ff0fd8c533e05db597b80d7ebbad7f8e512a888217d0640aa328","slug":"18"},"lang":"en","sqlstate":"40P01"},"19":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"63fb8d1aa9f494eeab9d0f8542a2b673f7746ee41ae2689d19403cb3cc425a5c","slug":"19"},"lang":"en","sqlstate":"40P01"},"20":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"0d3f602127cd137cf343b32d5fa78f175eeb6cdcb6353b1f6f998ede6cb7b911","slug":"devel"},"lang":"en","sqlstate":"40P01"},"8.1":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"0177b8818643540dec7bbef1fe92b60a3961debd52a68412301647ca146c7f2d","slug":"8.1"},"lang":"en","sqlstate":"40P01"},"8.2":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"d65bf7cff5958c304352c974e477183e21efe9bd68e03786001874653bf66963","slug":"8.2"},"lang":"en","sqlstate":"40P01"},"8.3":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"118059002973cdec5466ed3cabe7c9370b4c93d8ab542b8661d0eeb50cf6950d","slug":"8.3"},"lang":"en","sqlstate":"40P01"},"8.4":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"d63b10001be0581484022e33b78124a36bb3bd68d3ebe022cd7dfb375233432f","slug":"8.4"},"lang":"en","sqlstate":"40P01"},"9.0":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"658fc09c4c10eed7ac7dea4ed3e3eff8cc5791eb5af26b7b4a31b0f863b316db","slug":"9.0"},"lang":"en","sqlstate":"40P01"},"9.1":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"2d118b06c3b644c28b3ddefe9e4bef99a180321582209332372a5318f5bf8d1c","slug":"9.1"},"lang":"en","sqlstate":"40P01"},"9.2":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"2a37575b39c858d37c58fc4de6a16109554fd3306602294180d78faa1170d2cd","slug":"9.2"},"lang":"en","sqlstate":"40P01"},"9.3":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"2214b6869d764f7fba7221aefcdf1ab049b55ad51d63aa52054f3cd2c2533ae9","slug":"9.3"},"lang":"en","sqlstate":"40P01"},"9.4":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"7243e2d653befe88733222ede67958f0c4b7fae967b58eb97807aeb3f32b4096","slug":"9.4"},"lang":"en","sqlstate":"40P01"},"9.5":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"d40bc67cb331f1e4ccc0821ff57832c6c230edb0dce3ba4249defd21ae7ea29d","slug":"9.5"},"lang":"en","sqlstate":"40P01"},"9.6":{"aliases":[],"class_name":"Transaction Rollback","condition_name":"deadlock_detected","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"2ab55e487571c8998ec39b3d1bbae29ac6fc5c310875bee422d9a7b8b3fde5b3","slug":"9.6"},"lang":"en","sqlstate":"40P01"}},"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_T_R_DEADLOCK_DETECTED"],"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_T_R_DEADLOCK_DETECTED","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":"40P01","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":"two_session_lock_cycle","ServerVersion":null,"Status":null,"Payload":{"assertions":["One statement receives 40P01","The victim transaction is rolled back","The surviving session can finish with one coherent update per row","A post-victim retry takes locks in order and commits the complete repair"],"case_id":"two_session_lock_cycle","cleanup":"Roll back workers and drop the case schema.","has_snippet":true,"position":0,"preconditions":["Two sessions","Two rows","Both sessions acquire one row lock before attempting the other"],"repair":"Keep lock order consistent; after rollback, retry the complete idempotent transaction in that order and verify its committed result.","trigger":"Each session requests the row held by the other, using a barrier and observed lock waits.","versions":["10","18"]}},{"Kind":"claims","Ordinal":0,"ID":"identity.class-and-condition","ServerVersion":null,"Status":null,"Payload":{"claim_id":"identity.class-and-condition","limits":"Directory identity does not identify the lock graph or the selected victim.","method":"Read the Class 40 section and 40P01 row in the frozen errcodes.txt snapshot.","position":0,"runtime":[],"sources":["src.errcodes.18.6"],"statement":"40P01 is the deadlock_detected condition in Class 40 transaction_rollback."}},{"Kind":"claims","Ordinal":1,"ID":"mechanism.deadlock-report","ServerVersion":null,"Status":null,"Payload":{"claim_id":"mechanism.deadlock-report","limits":"The detail contains live process and transaction identifiers and is not a fixed user-facing template.","method":"Trace DeadLockReport and compare the primary message, dynamic detail, hint, and source location in the victim diagnostic.","position":1,"runtime":[],"sources":["src.deadlock.18.6","doc.protocol.18"],"statement":"The deadlock detector reports deadlock detected with a dynamically assembled wait-graph detail and the hint See server log for query details."}},{"Kind":"claims","Ordinal":2,"ID":"runtime.cycle-and-recovery","ServerVersion":null,"Status":null,"Payload":{"claim_id":"runtime.cycle-and-recovery","limits":"The survivor's winner can differ by timing; the run proves the controlled cycle and recovery, not a universal victim-selection rule.","method":"Use an explicit barrier, observe transactionid Lock waits through pg_stat_activity, then inspect worker diagnostics, transaction states, and surviving rows.","position":2,"runtime":[],"sources":["doc.mvcc.18","case-manifest.40P01","runtime.40P01-manual-boundary-final-20260909.latest","runtime.40P01-manual-boundary-final-20260909.pg10"],"statement":"An explicit two-session lock cycle produced one 40P01 victim in INERROR, left one coherent survivor transaction, and allowed the victim to recover with ROLLBACK."}},{"Kind":"claims","Ordinal":3,"ID":"runtime.complete-retry","ServerVersion":null,"Status":null,"Payload":{"claim_id":"runtime.complete-retry","limits":"A fixed ordered update is a repair proof for this case; application retries still need complete business-operation and idempotency review.","method":"Run the retry statements in primary-key order on a fresh transaction and assert IDLE plus both post-retry rows.","position":3,"runtime":[],"sources":["doc.mvcc.18","snippet-registry.40P01.final","runtime.40P01-registry-final-20260909.latest","runtime.40P01-registry-final-20260909.pg10","runtime.40P01-manual-boundary-final-20260909.latest","runtime.40P01-manual-boundary-final-20260909.pg10"],"statement":"After the deadlock cleanup, an ordered retry transaction updated both rows, committed, and produced retry-1 and retry-2."}},{"Kind":"claims","Ordinal":4,"ID":"versions.catalogue-boundary","ServerVersion":null,"Status":null,"Payload":{"claim_id":"versions.catalogue-boundary","limits":"The first scanned release is a lower bound, not an asserted introduction version.","method":"Read the manifest snapshots and definition references for the code.","position":4,"runtime":[],"sources":["manifest.40P01"],"statement":"The locked catalogue records 40P01 in every listed formal snapshot from 9.0.23 through 18.6 and in 19beta3; pre-9.0 history is not scanned."}},{"Kind":"messages","Ordinal":0,"ID":"message.deadlock-report","ServerVersion":null,"Status":null,"Payload":{"limits":"The source passes the assembled client wait graph through errdetail_internal(\"%s\", clientbuf.data); process, transaction, relation, and tuple values vary by run.","message_id":"message.deadlock-report","path":"","position":0,"raw":{"detail_template":"%s","detail_type":"dynamic wait graph","hint_template":"See server log for query details.","id":"message.deadlock-report","limits":"The source passes the assembled client wait graph through errdetail_internal(\"%s\", clientbuf.data); process, transaction, relation, and tuple values vary by run.","primary_template":"deadlock detected","severity_source":"explicit ERROR","sources":["src.deadlock.18.6"],"sqlstate":"40P01"},"severity":"explicit ERROR","sources":["src.deadlock.18.6"],"templates":[{"kind":"primary","literal":"deadlock detected","position":0,"role":"","template":"deadlock detected"},{"kind":"detail","literal":"","position":1,"role":"","template":"%s"},{"kind":"hint","literal":"See server log for query details.","position":2,"role":"","template":"See server log for query details."}]}},{"Kind":"runtimes","Ordinal":0,"ID":"runtime.40P01-registry-final-20260909.latest","ServerVersion":"18.6 (Homebrew)","Status":"passed","Payload":{"cases":["two_session_lock_cycle"],"limits":"","position":0,"raw":{"cases":["two_session_lock_cycle"],"id":"runtime.40P01-registry-final-20260909.latest","observed":{"lock_wait":{"wait_event":"transactionid","wait_event_type":"Lock"},"retry":{"rows":[[1,"retry-1"],[2,"retry-2"]],"status":"IDLE"},"rows_before_retry":[[1,"first-1"],[2,"first-2"]],"statuses":{"survivor":"IDLE","victim_after_error":"INERROR","victim_after_rollback":"IDLE"},"synchronization":"Both workers first held one row lock; a barrier then released the two cross-row requests, while an independent observer sampled the transactionid lock waits. The observer did not release the requests.","victim":{"message_hint":"See server log for query details.","message_primary":"deadlock detected","severity":"ERROR","source_file":"deadlock.c","source_function":"DeadLockReport","source_line":"1138","sqlstate":"40P01","worker":"second"}},"raw":"verify/results/40P01-registry-final-20260909/latest/raw.jsonl","raw_sha256":"bdfda4fc40404195f34d3297cf71eebdd2146ea44bf91fc58484498455a5953d","run_id":"40P01-registry-final-20260909","server_version":"18.6 (Homebrew)","server_version_num":180006,"snippet_registry":{"path":"verify/cases/40P01/snippets.json","sha256":"71a3377497dc2c1ba5b71c9ba81f71fc3cff975fcd245613ba2ddb82857c0591"},"status":"passed","summary":"verify/results/40P01-registry-final-20260909/latest/summary.json","summary_sha256":"693bc9cc5696cbb892eb12808a2b15db875c52aad5961410f59679df63566c07","target":"latest"},"run_id":"40P01-registry-final-20260909","runtime_id":"runtime.40P01-registry-final-20260909.latest","server_version":"18.6 (Homebrew)","status":"passed","target":"latest"}},{"Kind":"runtimes","Ordinal":1,"ID":"runtime.40P01-registry-final-20260909.pg10","ServerVersion":"10.21 (Debian 10.21-1.pgdg90+1)","Status":"passed","Payload":{"cases":["two_session_lock_cycle"],"limits":"","position":1,"raw":{"cases":["two_session_lock_cycle"],"id":"runtime.40P01-registry-final-20260909.pg10","image":"postgres@sha256:b2baf8998630663d21370da06387c950e587071bdd307ee34e661cdcc7442bcc","observed":{"lock_wait":{"wait_event":"transactionid","wait_event_type":"Lock"},"retry":{"rows":[[1,"retry-1"],[2,"retry-2"]],"status":"IDLE"},"rows_before_retry":[[1,"second-1"],[2,"second-2"]],"statuses":{"survivor":"IDLE","victim_after_error":"INERROR","victim_after_rollback":"IDLE"},"synchronization":"Both workers first held one row lock; a barrier then released the two cross-row requests, while an independent observer sampled the transactionid lock waits. The observer did not release the requests.","victim":{"message_hint":"See server log for query details.","message_primary":"deadlock detected","severity":"ERROR","source_file":"deadlock.c","source_function":"DeadLockReport","source_line":"1146","sqlstate":"40P01","worker":"first"}},"raw":"verify/results/40P01-registry-final-20260909/pg10/raw.jsonl","raw_sha256":"33e4c878282a503d074da04aaceb11f0aa5d0a245cac601562a5ea847cd45f63","run_id":"40P01-registry-final-20260909","server_version":"10.21 (Debian 10.21-1.pgdg90+1)","server_version_num":100021,"snippet_registry":{"path":"verify/cases/40P01/snippets.json","sha256":"71a3377497dc2c1ba5b71c9ba81f71fc3cff975fcd245613ba2ddb82857c0591"},"status":"passed","summary":"verify/results/40P01-registry-final-20260909/pg10/summary.json","summary_sha256":"ff489619acc2047333c05a4d565a0ad4c993a762b8c4abca3fe684cd8928cf0c","target":"pg10"},"run_id":"40P01-registry-final-20260909","runtime_id":"runtime.40P01-registry-final-20260909.pg10","server_version":"10.21 (Debian 10.21-1.pgdg90+1)","status":"passed","target":"pg10"}},{"Kind":"runtimes","Ordinal":2,"ID":"runtime.40P01-manual-boundary-final-20260909.latest","ServerVersion":"18.6 (Homebrew)","Status":"passed","Payload":{"cases":["two_session_lock_cycle"],"limits":"This run proves the registry BEGIN/COMMIT/ROLLBACK statements for both lock-cycle sessions and the ordered retry execute with autocommit=True; worker synchronization still uses barriers and observed lock waits.","position":2,"raw":{"cases":["two_session_lock_cycle"],"id":"runtime.40P01-manual-boundary-final-20260909.latest","limits":"This run proves the registry BEGIN/COMMIT/ROLLBACK statements for both lock-cycle sessions and the ordered retry execute with autocommit=True; worker synchronization still uses barriers and observed lock waits.","observed":{"connections_autocommit":{"first":true,"retry":true,"second":true},"retry":{"rows":[[1,"retry-1"],[2,"retry-2"]],"status":"IDLE"},"transaction_control":"Registry BEGIN/COMMIT/ROLLBACK statements run with autocommit=True; no driver implicit BEGIN participates."},"raw":"verify/results/40P01-manual-boundary-final-20260909/latest/raw.jsonl","raw_sha256":"562a80715a6dcaf4f14d99c54001799e05c3c52353d9e836ab88039f47ce2cb5","run_id":"40P01-manual-boundary-final-20260909","server_version":"18.6 (Homebrew)","server_version_num":180006,"snippet_registry":{"path":"verify/cases/40P01/snippets.json","sha256":"71a3377497dc2c1ba5b71c9ba81f71fc3cff975fcd245613ba2ddb82857c0591"},"status":"passed","summary":"verify/results/40P01-manual-boundary-final-20260909/latest/summary.json","summary_sha256":"4d5b1401badd66f6b1c33040d7bbbcfbc68ac611c3a7f508cb29a57bc2d95594","target":"latest"},"run_id":"40P01-manual-boundary-final-20260909","runtime_id":"runtime.40P01-manual-boundary-final-20260909.latest","server_version":"18.6 (Homebrew)","status":"passed","target":"latest"}},{"Kind":"runtimes","Ordinal":3,"ID":"runtime.40P01-manual-boundary-final-20260909.pg10","ServerVersion":"10.21 (Debian 10.21-1.pgdg90+1)","Status":"passed","Payload":{"cases":["two_session_lock_cycle"],"limits":"This run proves the registry BEGIN/COMMIT/ROLLBACK statements for both lock-cycle sessions and the ordered retry execute with autocommit=True; worker synchronization still uses barriers and observed lock waits.","position":3,"raw":{"cases":["two_session_lock_cycle"],"id":"runtime.40P01-manual-boundary-final-20260909.pg10","image":"postgres@sha256:b2baf8998630663d21370da06387c950e587071bdd307ee34e661cdcc7442bcc","limits":"This run proves the registry BEGIN/COMMIT/ROLLBACK statements for both lock-cycle sessions and the ordered retry execute with autocommit=True; worker synchronization still uses barriers and observed lock waits.","observed":{"connections_autocommit":{"first":true,"retry":true,"second":true},"retry":{"rows":[[1,"retry-1"],[2,"retry-2"]],"status":"IDLE"},"transaction_control":"Registry BEGIN/COMMIT/ROLLBACK statements run with autocommit=True; no driver implicit BEGIN participates."},"raw":"verify/results/40P01-manual-boundary-final-20260909/pg10/raw.jsonl","raw_sha256":"c2789c19f9106cf34a49fbfa791fbe0e23706f87e8d8a133abfb360165aa8ee1","run_id":"40P01-manual-boundary-final-20260909","server_version":"10.21 (Debian 10.21-1.pgdg90+1)","server_version_num":100021,"snippet_registry":{"path":"verify/cases/40P01/snippets.json","sha256":"71a3377497dc2c1ba5b71c9ba81f71fc3cff975fcd245613ba2ddb82857c0591"},"status":"passed","summary":"verify/results/40P01-manual-boundary-final-20260909/pg10/summary.json","summary_sha256":"1aca5e77935f4066898c72332cb16f06c16f56ccd00414349f21a746d46f6ed8","target":"pg10"},"run_id":"40P01-manual-boundary-final-20260909","runtime_id":"runtime.40P01-manual-boundary-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 329-334","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.deadlock.18.6","ServerVersion":null,"Status":null,"Payload":{"commit":"724edf9bde9d356724ad384a2e196edc3c9f80f7","docs_url":"","kind":"","location":"lines 1071-1138","path":"src/backend/storage/lmgr/deadlock.c","position":1,"sha256":"f9931d72369a752e5fff5df3b5bfe5ffd47a3f65651522d27cf62f75fac0075f","source_id":"src.deadlock.18.6","tag":"REL_18_6","url":"https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/storage/lmgr/deadlock.c#L1071-L1138"}},{"Kind":"sources","Ordinal":2,"ID":"doc.mvcc.18","ServerVersion":null,"Status":null,"Payload":{"commit":"724edf9bde9d356724ad384a2e196edc3c9f80f7","docs_url":"","kind":"","location":"serialization and deadlock failure handling","path":"doc/src/sgml/mvcc.sgml","position":2,"sha256":"4b7bf77ee0af4b86052330ff2421d567df3604b75fe7d4f522bec84fdea87340","source_id":"doc.mvcc.18","tag":"PG18-docs","url":"https://www.postgresql.org/docs/18/mvcc-serialization-failure-handling.html"}},{"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":"PG18-docs","url":"https://www.postgresql.org/docs/18/protocol-error-fields.html"}},{"Kind":"sources","Ordinal":4,"ID":"manifest.40P01","ServerVersion":null,"Status":null,"Payload":{"commit":"","docs_url":"","kind":"local_artifact","location":"snapshots and definition_blobs entries for the 40P01 definition","path":"sources/manifest.lock.json","position":4,"sha256":"1727a275f336988ff96b4f9990a4ca253080f73fc5d316e7def165c8cf3708a8","source_id":"manifest.40P01","tag":"","url":"../sources/manifest.lock.json"}},{"Kind":"sources","Ordinal":5,"ID":"case-manifest.40P01","ServerVersion":null,"Status":null,"Payload":{"commit":"","docs_url":"","kind":"local_artifact","location":"two_session_lock_cycle","path":"verify/cases/40P01/cases.json","position":5,"sha256":"85a8653680509a53f9d8fa9b08bafa3eeabe78553ef7d1f4e0aaf0ef7a1abe3d","source_id":"case-manifest.40P01","tag":"","url":"../verify/cases/40P01/cases.json"}},{"Kind":"sources","Ordinal":6,"ID":"snippet-registry.40P01.final","ServerVersion":null,"Status":null,"Payload":{"commit":"","docs_url":"","kind":"local_artifact","location":"two_session_lock_cycle ordered SQL","path":"verify/cases/40P01/snippets.json","position":6,"sha256":"71a3377497dc2c1ba5b71c9ba81f71fc3cff975fcd245613ba2ddb82857c0591","source_id":"snippet-registry.40P01.final","tag":"","url":"../verify/cases/40P01/snippets.json"}}]}
