{"Entry":{"collection":"sqlstate","key":"72000","name":"72000","aliases":[],"metadata":{"aliases":[],"case_count":0,"class_code":"72","condition_name":"snapshot_too_old","condition_names":["snapshot_too_old"],"content_hash":"3c79c20f56c44cd12b935b4130241f7409a74da14a237c749edd176cd0fd8ef0","depth":"full","editorial_review":"reviewed","evidence_tier":"source_path_confirmed","imported_at":"2026-09-30T17:45:27.962861+08:00","introduced":null,"known_present_by":"9.6.0","macros":["ERRCODE_SNAPSHOT_TOO_OLD"],"name_zh":"","present_in":["9.6","10","11","12","13","14","15","16"],"preview_in":[],"primary_macro":"ERRCODE_SNAPSHOT_TOO_OLD","removed":null,"runtime_verification":"not_run","severity_classes":["E"],"snippet_count":0,"source_rev":"english-manuals:63d701e90ea317bcc80ade81930daed5f8330c89beed576a3950dc55d865222d","sqlstate":"72000","status":"removed","summary_zh":"快照过旧无法读取该行，PG 17 已移除此码。"}},"Definition":{"Collection":"sqlstate","Key":"72000","SourceDatabase":"center","Version":"16","SourceTable":"sqlstate","SourceKey":"72000","SourceRevision":"english-manuals:63d701e90ea317bcc80ade81930daed5f8330c89beed576a3950dc55d865222d","Facts":{"aliases":[],"class_name":"Snapshot Failure","condition_name":"snapshot_too_old","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"928e705933d7c3d018ae3fba9d800b34e6325746d157339dce878473c519d100","slug":"16"},"lang":"en","sqlstate":"72000"},"ManualEvidence":{"doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"928e705933d7c3d018ae3fba9d800b34e6325746d157339dce878473c519d100","slug":"16"}},"MeasuredEvidence":{}},"Text":{"Collection":"sqlstate","Key":"72000","SourceDatabase":"center","Version":"","Locale":"en","Title":"72000 — snapshot_too_old","Summary":"72000 is a historical snapshottooold error. PostgreSQL 16.15 still defines and emits it; the SQLSTATE was removed in the PostgreSQL 17 major line. PostgreSQL 16.15 is therefore a later minor snapshot of the last major line, not the removal point.","BodyHTML":"\u003ch1\u003e72000\u003c/h1\u003e\n\u003ch2\u003eAt a glance {#at-a-glance}\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003e72000\u003c/code\u003e is a historical \u003ccode\u003esnapshot_too_old\u003c/code\u003e error. PostgreSQL 16.15 still defines and emits it; the SQLSTATE was removed in the PostgreSQL 17 major line. PostgreSQL 16.15 is therefore a later minor snapshot of the last major line, not the removal point.\u003c/p\u003e\n\u003ch2\u003eMeaning {#meaning}\u003c/h2\u003e\n\u003cp\u003eIn the fixed 16.15 sources, \u003ccode\u003eold_snapshot_threshold\u003c/code\u003e is a \u003ccode\u003ePGC_POSTMASTER\u003c/code\u003e integer GUC; \u003ccode\u003e-1\u003c/code\u003e disables the feature. The inline \u003ccode\u003eTestForOldSnapshot\u003c/code\u003e guard requires a non-negative threshold, an MVCC or TOAST snapshot with a valid LSN, and a page LSN newer than the snapshot. It then calls \u003ccode\u003eTestForOldSnapshot_impl\u003c/code\u003e, which additionally requires a permanent, non-catalog relation that allows early pruning and compares \u003ccode\u003esnapshot.whenTaken\u003c/code\u003e with \u003ccode\u003eGetOldSnapshotThresholdTimestamp()\u003c/code\u003e. If the snapshot is too old, the function raises \u003cstrong\u003eERROR\u003c/strong\u003e \u003ccode\u003e72000\u003c/code\u003e with \u003ccode\u003esnapshot too old\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe threshold timestamp is maintained by the old-snapshot time-to-XID mapping used by early pruning and vacuum. The PG16.15 documentation says that dead data older than the threshold may be vacuumed, and a read of a page modified after the snapshot can fail; a materialized cursor or a system catalog may avoid the error. Space retained for detection is not released to the operating system until an explicit operation such as \u003ccode\u003eVACUUM FULL\u003c/code\u003e.\u003c/p\u003e\n\u003ch2\u003eMessages {#messages}\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eERROR\u003c/strong\u003e, SQLSTATE \u003ccode\u003e72000\u003c/code\u003e: \u003ccode\u003esnapshot too old\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThere is no current PG17/18 definition row in the locked catalogue. Do not infer a replacement SQLSTATE or claim that an unrelated current error is equivalent.\u003c/p\u003e\n\u003ch2\u003eDiagnosis {#diagnosis}\u003c/h2\u003e\n\u003cp\u003eOn PostgreSQL 9.6 through 16, record the major version, \u003ccode\u003eSHOW old_snapshot_threshold\u003c/code\u003e, transaction snapshot age, relation kind, page/read path, and vacuum or pruning history. Check whether the relation is excluded by the guard (for example a system catalog), whether the read used a materialized cursor or result set, and whether the setting was active at server start. A source-only review cannot establish the threshold or cleanup history on a live cluster.\u003c/p\u003e\n\u003ch2\u003eResponse {#response}\u003c/h2\u003e\n\u003cp\u003eThis is a statement \u003ccode\u003eERROR\u003c/code\u003e; in an explicit transaction, roll back the transaction or to an already-established savepoint before issuing more SQL. The old snapshot cannot be repaired in place: end or shorten the long-running reader, use a suitable startup configuration for the historical major (the GUC is \u003ccode\u003ePGC_POSTMASTER\u003c/code\u003e, so changing it requires restart), and rerun the whole read unit with an idempotent boundary. On PostgreSQL 17 and later, first identify the current error and mechanism instead of installing a \u003ccode\u003e72000\u003c/code\u003e handler based on the historical name.\u003c/p\u003e\n\u003ch2\u003eVersions {#versions}\u003c/h2\u003e\n\u003cp\u003eThe locked definition artifact records \u003ccode\u003e72000\u003c/code\u003e from 9.6.0 through 16.15 and no PG17/18 definition. The 16.15 source documents the GUC and guard; the fixed buffer-manager emitter is from commit \u003ccode\u003e7d3e000c5961a544302072058a1184e9a588837b\u003c/code\u003e. The catalogue boundary establishes removal in the PG17 major line, not in minor release 16.15.\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\u003c/a\u003e, \u003ca href=\"/wiki/sqlstate/XX001/\" rel=\"nofollow\"\u003e\u003ccode\u003eXX001\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eSources {#sources}\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/src/backend/storage/buffer/bufmgr.c#L5663\" rel=\"nofollow\"\u003e\u003ccode\u003esrc/backend/storage/buffer/bufmgr.c#L5663-L5675\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/src/include/storage/bufmgr.h#L363\" rel=\"nofollow\"\u003e\u003ccode\u003esrc/include/storage/bufmgr.h#L363-L392\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/src/backend/utils/time/snapmgr.c#L1697\" rel=\"nofollow\"\u003e\u003ccode\u003esrc/backend/utils/time/snapmgr.c#L1697-L1714\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/src/backend/utils/misc/guc_tables.c#L3295\" rel=\"nofollow\"\u003e\u003ccode\u003esrc/backend/utils/misc/guc_tables.c#L3295-L3302\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/doc/src/sgml/config.sgml#L2827\" rel=\"nofollow\"\u003e\u003ccode\u003edoc/src/sgml/config.sgml#L2827-L2884\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe structured \u003ca href=\"#sources\" rel=\"nofollow\"\u003eevidence record\u003c/a\u003e records the historical definition, guard, GUC, documentation, and source/runtime boundary.\u003c/p\u003e\n","SourceRevision":"english-manuals:63d701e90ea317bcc80ade81930daed5f8330c89beed576a3950dc55d865222d","ContentHash":"3e761e3b996f7a0bc42dea85f602d44bc1872e41d43e1582d055bdf4d0f20402","Payload":{"body_md":"# 72000\n\n## At a glance {#at-a-glance}\n\n`72000` is a historical `snapshot_too_old` error. PostgreSQL 16.15 still defines and emits it; the SQLSTATE was removed in the PostgreSQL 17 major line. PostgreSQL 16.15 is therefore a later minor snapshot of the last major line, not the removal point.\n\n\n## Meaning {#meaning}\n\nIn the fixed 16.15 sources, `old_snapshot_threshold` is a `PGC_POSTMASTER` integer GUC; `-1` disables the feature. The inline `TestForOldSnapshot` guard requires a non-negative threshold, an MVCC or TOAST snapshot with a valid LSN, and a page LSN newer than the snapshot. It then calls `TestForOldSnapshot_impl`, which additionally requires a permanent, non-catalog relation that allows early pruning and compares `snapshot.whenTaken` with `GetOldSnapshotThresholdTimestamp()`. If the snapshot is too old, the function raises **ERROR** `72000` with `snapshot too old`.\n\nThe threshold timestamp is maintained by the old-snapshot time-to-XID mapping used by early pruning and vacuum. The PG16.15 documentation says that dead data older than the threshold may be vacuumed, and a read of a page modified after the snapshot can fail; a materialized cursor or a system catalog may avoid the error. Space retained for detection is not released to the operating system until an explicit operation such as `VACUUM FULL`.\n\n## Messages {#messages}\n\n- **ERROR**, SQLSTATE `72000`: `snapshot too old`.\n\nThere is no current PG17/18 definition row in the locked catalogue. Do not infer a replacement SQLSTATE or claim that an unrelated current error is equivalent.\n\n## Diagnosis {#diagnosis}\n\nOn PostgreSQL 9.6 through 16, record the major version, `SHOW old_snapshot_threshold`, transaction snapshot age, relation kind, page/read path, and vacuum or pruning history. Check whether the relation is excluded by the guard (for example a system catalog), whether the read used a materialized cursor or result set, and whether the setting was active at server start. A source-only review cannot establish the threshold or cleanup history on a live cluster.\n\n## Response {#response}\n\nThis is a statement `ERROR`; in an explicit transaction, roll back the transaction or to an already-established savepoint before issuing more SQL. The old snapshot cannot be repaired in place: end or shorten the long-running reader, use a suitable startup configuration for the historical major (the GUC is `PGC_POSTMASTER`, so changing it requires restart), and rerun the whole read unit with an idempotent boundary. On PostgreSQL 17 and later, first identify the current error and mechanism instead of installing a `72000` handler based on the historical name.\n\n## Versions {#versions}\n\nThe locked definition artifact records `72000` from 9.6.0 through 16.15 and no PG17/18 definition. The 16.15 source documents the GUC and guard; the fixed buffer-manager emitter is from commit `7d3e000c5961a544302072058a1184e9a588837b`. The catalogue boundary establishes removal in the PG17 major line, not in minor release 16.15.\n\n## Related {#related}\n\n[`40001`](/wiki/sqlstate/40001/), [`XX001`](/wiki/sqlstate/XX001/)\n\n## Sources {#sources}\n\n[`src/backend/storage/buffer/bufmgr.c#L5663-L5675`](https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/src/backend/storage/buffer/bufmgr.c#L5663)\n\n[`src/include/storage/bufmgr.h#L363-L392`](https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/src/include/storage/bufmgr.h#L363)\n\n[`src/backend/utils/time/snapmgr.c#L1697-L1714`](https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/src/backend/utils/time/snapmgr.c#L1697)\n\n[`src/backend/utils/misc/guc_tables.c#L3295-L3302`](https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/src/backend/utils/misc/guc_tables.c#L3295)\n\n[`doc/src/sgml/config.sgml#L2827-L2884`](https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/doc/src/sgml/config.sgml#L2827)\n\nThe structured [evidence record](#sources) records the historical definition, guard, GUC, documentation, and source/runtime boundary.\n","description":"Source-backed historical reference for PostgreSQL SQLSTATE 72000.","is_stale":false,"name":"","sections":[{"anchor":"","heading":"","html":"\u0026lt;h1\u0026gt;72000\u0026lt;/h1\u0026gt;"},{"anchor":"at-a-glance","heading":"At a glance","html":"\u003cp\u003e\u003ccode\u003e72000\u003c/code\u003e is a historical \u003ccode\u003esnapshot_too_old\u003c/code\u003e error. PostgreSQL 16.15 still defines and emits it; the SQLSTATE was removed in the PostgreSQL 17 major line. PostgreSQL 16.15 is therefore a later minor snapshot of the last major line, not the removal point.\u003c/p\u003e"},{"anchor":"meaning","heading":"Meaning","html":"\u003cp\u003eIn the fixed 16.15 sources, \u003ccode\u003eold_snapshot_threshold\u003c/code\u003e is a \u003ccode\u003ePGC_POSTMASTER\u003c/code\u003e integer GUC; \u003ccode\u003e-1\u003c/code\u003e disables the feature. The inline \u003ccode\u003eTestForOldSnapshot\u003c/code\u003e guard requires a non-negative threshold, an MVCC or TOAST snapshot with a valid LSN, and a page LSN newer than the snapshot. It then calls \u003ccode\u003eTestForOldSnapshot_impl\u003c/code\u003e, which additionally requires a permanent, non-catalog relation that allows early pruning and compares \u003ccode\u003esnapshot.whenTaken\u003c/code\u003e with \u003ccode\u003eGetOldSnapshotThresholdTimestamp()\u003c/code\u003e. If the snapshot is too old, the function raises \u003cstrong\u003eERROR\u003c/strong\u003e \u003ccode\u003e72000\u003c/code\u003e with \u003ccode\u003esnapshot too old\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe threshold timestamp is maintained by the old-snapshot time-to-XID mapping used by early pruning and vacuum. The PG16.15 documentation says that dead data older than the threshold may be vacuumed, and a read of a page modified after the snapshot can fail; a materialized cursor or a system catalog may avoid the error. Space retained for detection is not released to the operating system until an explicit operation such as \u003ccode\u003eVACUUM FULL\u003c/code\u003e.\u003c/p\u003e"},{"anchor":"messages","heading":"Messages","html":"\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eERROR\u003c/strong\u003e, SQLSTATE \u003ccode\u003e72000\u003c/code\u003e: \u003ccode\u003esnapshot too old\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThere is no current PG17/18 definition row in the locked catalogue. Do not infer a replacement SQLSTATE or claim that an unrelated current error is equivalent.\u003c/p\u003e"},{"anchor":"diagnosis","heading":"Diagnosis","html":"\u003cp\u003eOn PostgreSQL 9.6 through 16, record the major version, \u003ccode\u003eSHOW old_snapshot_threshold\u003c/code\u003e, transaction snapshot age, relation kind, page/read path, and vacuum or pruning history. Check whether the relation is excluded by the guard (for example a system catalog), whether the read used a materialized cursor or result set, and whether the setting was active at server start. A source-only review cannot establish the threshold or cleanup history on a live cluster.\u003c/p\u003e"},{"anchor":"response","heading":"Response","html":"\u003cp\u003eThis is a statement \u003ccode\u003eERROR\u003c/code\u003e; in an explicit transaction, roll back the transaction or to an already-established savepoint before issuing more SQL. The old snapshot cannot be repaired in place: end or shorten the long-running reader, use a suitable startup configuration for the historical major (the GUC is \u003ccode\u003ePGC_POSTMASTER\u003c/code\u003e, so changing it requires restart), and rerun the whole read unit with an idempotent boundary. On PostgreSQL 17 and later, first identify the current error and mechanism instead of installing a \u003ccode\u003e72000\u003c/code\u003e handler based on the historical name.\u003c/p\u003e"},{"anchor":"versions","heading":"Versions","html":"\u003cp\u003eThe locked definition artifact records \u003ccode\u003e72000\u003c/code\u003e from 9.6.0 through 16.15 and no PG17/18 definition. The 16.15 source documents the GUC and guard; the fixed buffer-manager emitter is from commit \u003ccode\u003e7d3e000c5961a544302072058a1184e9a588837b\u003c/code\u003e. The catalogue boundary establishes removal in the PG17 major line, not in minor release 16.15.\u003c/p\u003e"},{"anchor":"related","heading":"Related","html":"\u003cp\u003e\u003ca href=\"/wiki/sqlstate/40001/\"\u003e\u003ccode\u003e40001\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sqlstate/XX001/\"\u003e\u003ccode\u003eXX001\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e"},{"anchor":"sources","heading":"Sources","html":"\u003cp\u003e\u003ca href=\"https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/src/backend/storage/buffer/bufmgr.c#L5663\"\u003e\u003ccode\u003esrc/backend/storage/buffer/bufmgr.c#L5663-L5675\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/src/include/storage/bufmgr.h#L363\"\u003e\u003ccode\u003esrc/include/storage/bufmgr.h#L363-L392\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/src/backend/utils/time/snapmgr.c#L1697\"\u003e\u003ccode\u003esrc/backend/utils/time/snapmgr.c#L1697-L1714\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/src/backend/utils/misc/guc_tables.c#L3295\"\u003e\u003ccode\u003esrc/backend/utils/misc/guc_tables.c#L3295-L3302\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/doc/src/sgml/config.sgml#L2827\"\u003e\u003ccode\u003edoc/src/sgml/config.sgml#L2827-L2884\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe structured \u003ca href=\"#sources\"\u003eevidence record\u003c/a\u003e records the historical definition, guard, GUC, documentation, and source/runtime boundary.\u003c/p\u003e"}],"summary":"72000 is a historical snapshottooold error. PostgreSQL 16.15 still defines and emits it; the SQLSTATE was removed in the PostgreSQL 17 major line. PostgreSQL 16.15 is therefore a later minor snapshot of the last major line, not the removal point.","title":"72000 — snapshot_too_old","translation_source_rev":"e28c674f37c7af5a2f81b65462a2ea0607e599c86cbee287529635151dfb6b1c"}},"RequestedLocale":"en","Fallback":false,"Versions":["10","11","12","13","14","15","16","9.6"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":{"aliases":[],"catalogue_notes":{"earliest_observed":"9.6.0","formal_scope":"9.0.0..18.6","latest_observed":"16.15","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":"not_observed","preview_scope":[]},"class":"72","class_name":"Snapshot Failure","condition_name":"snapshot_too_old","condition_names":["snapshot_too_old"],"definition_changes":[],"english_manuals":{"10":{"aliases":[],"class_name":"Snapshot Failure","condition_name":"snapshot_too_old","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"9607b57e9f639b61785677ba4d226f5889fe1d19c8bf55a3337691899a9073cd","slug":"10"},"lang":"en","sqlstate":"72000"},"11":{"aliases":[],"class_name":"Snapshot Failure","condition_name":"snapshot_too_old","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"3a024e38263ad77de228eed7930b842b42dc1d5cab9ca3727be8eed872ec9539","slug":"11"},"lang":"en","sqlstate":"72000"},"12":{"aliases":[],"class_name":"Snapshot Failure","condition_name":"snapshot_too_old","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"1444bd6a138537cd75be88a220ee9472ac528f0cfc58758e49636d85455efe98","slug":"12"},"lang":"en","sqlstate":"72000"},"13":{"aliases":[],"class_name":"Snapshot Failure","condition_name":"snapshot_too_old","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"4a3ef8af218e5736dfde8660ba609e84233b6b3bac7e0210ff8724cf1b27b2db","slug":"13"},"lang":"en","sqlstate":"72000"},"14":{"aliases":[],"class_name":"Snapshot Failure","condition_name":"snapshot_too_old","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"1c12e83304e0f4ff64c9d98ca5e3007df6756932ed19867a4fa0e0650f6c5751","slug":"14"},"lang":"en","sqlstate":"72000"},"15":{"aliases":[],"class_name":"Snapshot Failure","condition_name":"snapshot_too_old","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"2161f58f6e87f6535b3b1f3d4661427bb6765f4f6b074fcc16fac97594b50599","slug":"15"},"lang":"en","sqlstate":"72000"},"16":{"aliases":[],"class_name":"Snapshot Failure","condition_name":"snapshot_too_old","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"928e705933d7c3d018ae3fba9d800b34e6325746d157339dce878473c519d100","slug":"16"},"lang":"en","sqlstate":"72000"},"9.6":{"aliases":[],"class_name":"Snapshot Failure","condition_name":"snapshot_too_old","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"2ab55e487571c8998ec39b3d1bbae29ac6fc5c310875bee422d9a7b8b3fde5b3","slug":"9.6"},"lang":"en","sqlstate":"72000"}},"history_boundary":{"earliest_observed":"9.6.0","formal_tag_count":351,"gaps":[],"latest_observed":"16.15","pre_range":{"first_observed":null,"known_lower_bound":null,"last_observed":null,"notes":"No occurrence was observed in the locked 7.4..8.4 definition files. Source gaps for 7.0..7.3 prevent a claim that the code was absent before 7.4.","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":"9.6.0","macros":["ERRCODE_SNAPSHOT_TOO_OLD"],"manual_presence":["9.6","10","11","12","13","14","15","16"],"pre9_first_observed":null,"pre9_introduction_boundary":null,"pre9_last_observed":null,"pre9_presence_intervals":[],"pre9_status":"not_observed","presence_intervals":[{"end":"9.6.24","end_major":"9.6","end_tag":"REL9_6_24","evidence_count":25,"position":0,"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":1,"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":2,"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":3,"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":4,"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":5,"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":6,"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":7,"start":"16.0","start_major":"16","start_tag":"REL_16_0"}],"present_in_snapshots":["9.6.24","10.23","11.22","12.22","13.23","14.24","15.19","16.15"],"preview_in_snapshots":[],"primary_macro":"ERRCODE_SNAPSHOT_TOO_OLD","removed":null,"schema_version":2,"severity_classes":["E"],"sources":[{"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"}],"sqlstate":"72000","status":"removed","usage_evidence":[{"evidence_ids":["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"],"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":[],"notes":"No occurrence was found in the locked 7.4..8.4 definition files; 7.0..7.3 source gaps remain explicit.","scope":"pre9-definition-history","status":"unknown"}]},"Evidence":[{"Kind":"claims","Ordinal":0,"ID":"identity","ServerVersion":null,"Status":null,"Payload":{"claim_id":"identity","limits":"","method":"Read locked historical definition snapshot.","position":0,"runtime":[],"sources":["src.definition.rel16.artifact"],"statement":"72000 is snapshot_too_old in SQLSTATE Class 72 in the locked REL_16_15 definition artifact."}},{"Kind":"claims","Ordinal":1,"ID":"resolved-paths","ServerVersion":null,"Status":null,"Payload":{"claim_id":"resolved-paths","limits":"Source confirmation is not natural runtime.","method":"Read the inline guard, implementation, and threshold mapping contexts.","position":1,"runtime":[],"sources":["src.path.0","src.path.1","src.path.2"],"statement":"The PG16.15 guard checks snapshot type, LSN/page ordering, relation eligibility, and threshold timestamp before raising ERROR 72000 with snapshot too old."}},{"Kind":"claims","Ordinal":2,"ID":"configuration-and-history","ServerVersion":null,"Status":null,"Payload":{"claim_id":"configuration-and-history","limits":"","method":"Read fixed GUC and documentation plus locked version membership.","position":2,"runtime":[],"sources":["src.path.3","src.path.4","src.definition.rel16.artifact"],"statement":"old_snapshot_threshold is a PGC_POSTMASTER setting, disabled by -1, and the PG16.15 documentation describes the vacuum/read conditions; the catalogue boundary places removal in the PG17 major line."}},{"Kind":"claims","Ordinal":3,"ID":"history","ServerVersion":null,"Status":null,"Payload":{"claim_id":"history","limits":"","method":"Compare locked version snapshots.","position":3,"runtime":[],"sources":["src.definition.rel16.artifact"],"statement":"The locked definition artifact records 72000 through 16.15 and absent from PG17/18 snapshots; it does not assert a replacement SQLSTATE."}},{"Kind":"messages","Ordinal":0,"ID":"message.0","ServerVersion":null,"Status":null,"Payload":{"limits":"","message_id":"message.0","path":"","position":0,"raw":{"id":"message.0","primary_template":"snapshot too old","severity_source":"ERROR","sources":["src.path.0"],"sqlstate":"72000"},"severity":"ERROR","sources":["src.path.0"],"templates":[{"kind":"primary","literal":"snapshot too old","position":0,"role":"","template":"snapshot too old"}]}},{"Kind":"sources","Ordinal":0,"ID":"src.definition.rel16.artifact","ServerVersion":null,"Status":null,"Payload":{"commit":"","docs_url":"","kind":"local_artifact","location":"","path":"raw/definitions/REL_16_15.txt","position":0,"sha256":"1d1d741b7b7c6dfd8275287e31c79befed75f3b9349e1a42ef0ca147c429ff88","source_id":"src.definition.rel16.artifact","tag":"REL_16_15","url":""}},{"Kind":"sources","Ordinal":1,"ID":"src.path.0","ServerVersion":null,"Status":null,"Payload":{"commit":"7d3e000c5961a544302072058a1184e9a588837b","docs_url":"","kind":"upstream_source","location":"","path":"src/backend/storage/buffer/bufmgr.c","position":1,"sha256":"dd070e7dfee25fa7beabd63abf35d3116105f0517e83dd0743a9c73d8f50cfec","source_id":"src.path.0","tag":"REL_16_15","url":"https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/src/backend/storage/buffer/bufmgr.c#L5663"}},{"Kind":"sources","Ordinal":2,"ID":"src.path.1","ServerVersion":null,"Status":null,"Payload":{"commit":"7d3e000c5961a544302072058a1184e9a588837b","docs_url":"","kind":"upstream_source","location":"","path":"src/include/storage/bufmgr.h","position":2,"sha256":"9068c40143d84d3827bae5275bf13f6890d6b232a08922088187b0019ea94587","source_id":"src.path.1","tag":"REL_16_15","url":"https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/src/include/storage/bufmgr.h#L363"}},{"Kind":"sources","Ordinal":3,"ID":"src.path.2","ServerVersion":null,"Status":null,"Payload":{"commit":"7d3e000c5961a544302072058a1184e9a588837b","docs_url":"","kind":"upstream_source","location":"","path":"src/backend/utils/time/snapmgr.c","position":3,"sha256":"7d87a04c85bd146f639bc4280bbb643f1000af231737f6055cbd4c35984f502c","source_id":"src.path.2","tag":"REL_16_15","url":"https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/src/backend/utils/time/snapmgr.c#L1697"}},{"Kind":"sources","Ordinal":4,"ID":"src.path.3","ServerVersion":null,"Status":null,"Payload":{"commit":"7d3e000c5961a544302072058a1184e9a588837b","docs_url":"","kind":"upstream_source","location":"","path":"src/backend/utils/misc/guc_tables.c","position":4,"sha256":"2e3efa81095d9fbc77afe7c3c0960f3440f33be768a1ac02461596161cf95468","source_id":"src.path.3","tag":"REL_16_15","url":"https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/src/backend/utils/misc/guc_tables.c#L3295"}},{"Kind":"sources","Ordinal":5,"ID":"src.path.4","ServerVersion":null,"Status":null,"Payload":{"commit":"7d3e000c5961a544302072058a1184e9a588837b","docs_url":"","kind":"upstream_source","location":"","path":"doc/src/sgml/config.sgml","position":5,"sha256":"b256738f2425571a921f176e6e6d4b936a8164a0c79381c4c216d26c9749514c","source_id":"src.path.4","tag":"REL_16_15","url":"https://github.com/postgres/postgres/blob/7d3e000c5961a544302072058a1184e9a588837b/doc/src/sgml/config.sgml#L2827"}}]}
