{"Entry":{"collection":"sqlstate","key":"08P01","name":"08P01","aliases":[],"metadata":{"aliases":[],"case_count":1,"class_code":"08","condition_name":"protocol_violation","condition_names":["protocol_violation"],"content_hash":"993a102da18e455204ed243b2d2615c3dc6de79074be4a959d0b771ac5bc0fea","depth":"full","editorial_review":"reviewed","evidence_tier":"observed_runtime","imported_at":"2026-09-30T17:45:26.720356+08:00","introduced":null,"known_present_by":"7.4","macros":["ERRCODE_PROTOCOL_VIOLATION"],"name_zh":"协议违规","present_in":["9.0","9.1","9.2","9.3","9.4","9.5","9.6","10","11","12","13","14","15","16","17","18","19"],"preview_in":["19"],"primary_macro":"ERRCODE_PROTOCOL_VIOLATION","removed":null,"runtime_verification":"passed","severity_classes":["E"],"snippet_count":1,"source_rev":"english-manuals:cff3edb58e3a5379935f38c2fa5b82c967b8abd9d6a2f638625ec62be8b27d48","sqlstate":"08P01","status":"active","summary_zh":"前后端消息违反线路协议，通常是 FATAL。"}},"Definition":{"Collection":"sqlstate","Key":"08P01","SourceDatabase":"center","Version":"18","SourceTable":"sqlstate","SourceKey":"08P01","SourceRevision":"english-manuals:cff3edb58e3a5379935f38c2fa5b82c967b8abd9d6a2f638625ec62be8b27d48","Facts":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"56dacf78e618ff0fd8c533e05db597b80d7ebbad7f8e512a888217d0640aa328","slug":"18"},"lang":"en","sqlstate":"08P01"},"ManualEvidence":{"doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"56dacf78e618ff0fd8c533e05db597b80d7ebbad7f8e512a888217d0640aa328","slug":"18"}},"MeasuredEvidence":{}},"Text":{"Collection":"sqlstate","Key":"08P01","SourceDatabase":"center","Version":"","Locale":"zh-Hans","Title":"08P01 — 协议违规（protocol_violation）","Summary":"前后端消息违反线路协议，通常是 FATAL。","BodyHTML":"\u003ch1\u003e08P01 — 协议违规\u003c/h1\u003e\n\u003ch2\u003e速览 {#at-a-glance}\u003c/h2\u003e\n\u003cp\u003eSQLSTATE \u003ccode\u003e08P01\u003c/code\u003e 是 Class \u003ccode\u003e08\u003c/code\u003e 中的 \u003cstrong\u003eprotocol_violation\u003c/strong\u003e。\u003ccode\u003e08P01\u003c/code\u003e 表示前端/后端消息违反线路协议。选定原始 TCP 案例先完成启动并观察 ReadyForQuery（\u003ccode\u003eZ\u003c/code\u003e），再在合法帧中发送未知前端字节 \u003ccode\u003eY\u003c/code\u003e，收到 C=\u003ccode\u003e08P01\u003c/code\u003e、S=\u003ccode\u003eFATAL\u003c/code\u003e、主报文 \u003ccode\u003einvalid frontend message type 89\u003c/code\u003e，并在客户端关闭 socket 前读到服务器 EOF。\u003c/p\u003e\n\u003ch2\u003e含义 {#meaning}\u003c/h2\u003e\n\u003cp\u003e服务器协议解析器先接受启动交换，随后在派发 SQL 前拒绝未知的前端消息类型。选定路径为 FATAL \u003ccode\u003einvalid frontend message type 89\u003c/code\u003e，之后服务器发送 EOF；因此它是受影响 socket 的同步边界，不是 SQL 解析错误。\u003c/p\u003e\n\u003cp\u003e关键边界在于线路状态，而不是 SQL 文本。客户端可以已经到达 \u003ccode\u003eReadyForQuery\u003c/code\u003e，却在下一条消息中发送错误类型，选定案例正是如此；启动帧损坏或代理改变帧边界也可能更早失败，并且可能没有可用会话。选定运行覆盖未知消息分派分支；下面的固定源码证据还覆盖不同的 Bind 和 message-buffer 解析分支，其他传输故障必须依据自身的 ErrorResponse 或日志判断。\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e08P01\u003c/code\u003e 并不意味着固定的严重级别或 socket 结果。在固定的 extended-query 路径中，Bind 消息的 parameter-format 数量或参数数量不匹配时报告 \u003ccode\u003eERROR\u003c/code\u003e；顶层循环中止当前命令，等待协议规定的 \u003ccode\u003eSync\u003c/code\u003e，然后才继续下一个 \u003ccode\u003eReadyForQuery\u003c/code\u003e。固定的 message-buffer 读取器在缺少字节、字符串无效或报文尾部有数据时也使用 \u003ccode\u003eERROR\u003c/code\u003e。这些可恢复的协议错误不同于未知消息类型：后者是 \u003ccode\u003eFATAL\u003c/code\u003e 边界，因为服务器不能再信任消息同步状态。\u003c/p\u003e\n\u003ch2\u003e诊断 {#diagnosis}\u003c/h2\u003e\n\u003cp\u003e检查驱动或代理的协议版本、消息类型、帧长度、启动模式和连接所有权。选定证据中的 \u003ccode\u003ecollector\u003c/code\u003e 是收集原始协议 ErrorResponse（C/S/M 及服务器 EOF）的对象，不是 csvlog/jsonlog。服务器关闭产生 FATAL 的 socket，案例不会复用它；独立的运行器连接能执行 \u003ccode\u003eSELECT 1\u003c/code\u003e 并保持 \u003ccode\u003eIDLE\u003c/code\u003e。这是线路协议边界，不是 SQL 语法，也不是客户端自行创建的 SQLSTATE。\u003c/p\u003e\n\u003cp\u003e按阶段解释恢复：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e启动完成前没有会话级事务，驱动可能只有连接异常；如果服务器发过响应，应保留原始线路记录。\u003c/li\u003e\n\u003cli\u003e启动到达 \u003ccode\u003eZ\u003c/code\u003e 后，未知前端消息会在已建立后端中被拒绝，但选定分支是 \u003ccode\u003eFATAL\u003c/code\u003e，随后服务器关闭该 socket。即使客户端在协议失步前已经开始工作，也不能在这个 socket 上发送 \u003ccode\u003eROLLBACK\u003c/code\u003e。\u003c/li\u003e\n\u003cli\u003e经过连接池或代理时，要比较所有者实际发送的字节与服务器期望的协议版本和帧格式。另一条连接上的 \u003ccode\u003eSELECT 1\u003c/code\u003e 只证明可达，不证明在途请求已经提交。\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e先根据主报文识别分支，再选择恢复动作。\u003ccode\u003ebind message has ... parameter formats\u003c/code\u003e 和 \u003ccode\u003ebind message supplies ... parameters\u003c/code\u003e 指向 extended-query 数量契约；\u003ccode\u003eno data left in message\u003c/code\u003e、\u003ccode\u003einsufficient data left in message\u003c/code\u003e、\u003ccode\u003einvalid string in message\u003c/code\u003e 和 \u003ccode\u003einvalid message format\u003c/code\u003e 指向报文主体或边界损坏。这些源码定义的 \u003ccode\u003eERROR\u003c/code\u003e 变体在驱动仍能保持帧边界时可能通过 \u003ccode\u003eSync\u003c/code\u003e 恢复；带 \u003ccode\u003eFATAL\u003c/code\u003e 的 \u003ccode\u003einvalid frontend message type ...\u003c/code\u003e 则表示选定 socket 已经失效。\u003c/p\u003e\n\u003ch2\u003e处理 {#response}\u003c/h2\u003e\n\u003cp\u003e收到 \u003ccode\u003eFATAL\u003c/code\u003e 或服务器 EOF 时，关闭并丢弃受影响的 socket，修正协议或代理帧后重新连接。extended-query 的 \u003ccode\u003eERROR\u003c/code\u003e 应让驱动发送协议有效的 \u003ccode\u003eSync\u003c/code\u003e 并等待 \u003ccode\u003eReadyForQuery\u003c/code\u003e，然后检查事务状态；\u003ccode\u003eSync\u003c/code\u003e 不会回滚失败的显式事务，状态为 \u003ccode\u003eE\u003c/code\u003e 时仍须执行 \u003ccode\u003eROLLBACK\u003c/code\u003e 或回到有意建立的保存点。若非幂等请求在途中，重放前先核对结果。独立探针只证明新连接可用。\u003c/p\u003e\n\u003cp\u003e将选定案例视为会话终止分支：读到服务器 EOF 后建立新连接，并且只重做已核对且具幂等性的操作。如果违规发生在会话建立前，应先修正启动或代理配置。只有客户端解析器异常或 socket 关闭而没有服务器 \u003ccode\u003eC\u003c/code\u003e 字段，不能把事件标成 \u003ccode\u003e08P01\u003c/code\u003e。\u003c/p\u003e\n\u003cp\u003e不要自行拼接字节，也不要把事务当作已经提交。若驱动无法保持报文边界或不实现 Sync 契约，应丢弃连接并核对请求结果。这一源码流程不改变选定未知字节运行：该案例的 \u003ccode\u003eFATAL\u003c/code\u003e socket 必须丢弃。\u003c/p\u003e\n\u003ch2\u003e报文 {#messages}\u003c/h2\u003e\n\u003cp\u003e固定的协议解析路径以 \u003ccode\u003eFATAL\u003c/code\u003e 发出主报文 \u003ccode\u003einvalid frontend message type %d\u003c/code\u003e，其中字节数值是动态的。选定的 \u003ccode\u003eY\u003c/code\u003e 字节记录为 \u003ccode\u003e89\u003c/code\u003e。SQLSTATE 的依据是原始 ErrorResponse，而不是客户端异常。\u003c/p\u003e\n\u003cp\u003e其他固定源码分支以 \u003ccode\u003eERROR\u003c/code\u003e 发出以下主报文模板：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ebind message has %d parameter formats but %d parameters\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ebind message supplies %d parameters, but prepared statement \u0026#34;%s\u0026#34; requires %d\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eno data left in message\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003einsufficient data left in message\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003einvalid string in message\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003einvalid message format\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e这些 Bind 和 message-buffer 变体在本页中是源码证据，不是新增运行观察，也不会全部终止 socket。\u003c/p\u003e\n\u003cp\u003e选定的线路顺序是：启动交换 → \u003ccode\u003eZ\u003c/code\u003e ReadyForQuery → 合法帧中的类型字节 \u003ccode\u003eY\u003c/code\u003e（十进制 \u003ccode\u003e89\u003c/code\u003e）→ ErrorResponse \u003ccode\u003eC=08P01\u003c/code\u003e、\u003ccode\u003eS=FATAL\u003c/code\u003e、\u003ccode\u003eM=invalid frontend message type 89\u003c/code\u003e → 服务器 EOF。collector 直接收集这些协议字段和 EOF，既不是 csvlog/jsonlog 记录，也不是后续独立探针。\u003c/p\u003e\n\u003ch2\u003e代表案例 {#case}\u003c/h2\u003e\n\u003cp\u003eSQL 探针用于检查独立连接。真实触发是运行器拥有的 TCP 握手后发送未知前端消息字节，不能只用 SQL 表达。\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eSELECT 1;\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e18.6 服务器记录为 C=\u003ccode\u003e08P01\u003c/code\u003e、S=\u003ccode\u003eFATAL\u003c/code\u003e、主报文 \u003ccode\u003einvalid frontend message type 89\u003c/code\u003e；启动到达 \u003ccode\u003eZ\u003c/code\u003e，服务器 EOF 断言为 \u003ccode\u003eTrue\u003c/code\u003e，独立探针返回 \u003ccode\u003e1\u003c/code\u003e，状态 \u003ccode\u003eIDLE\u003c/code\u003e。因此没有复用触发错误的连接。\u003c/p\u003e\n\u003cp\u003e可下载的案例与证据投影分别是 \u003ca href=\"#cases\" rel=\"nofollow\"\u003e\u003ccode\u003e08P01 案例 JSON\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"#sources\" rel=\"nofollow\"\u003e\u003ccode\u003e作者证据\u003c/code\u003e\u003c/a\u003e。运行器清单为 \u003ccode\u003everify/cases/08P01/cases.json\u003c/code\u003e；发布前会将页面 SQL 与共享注册表比对。\u003c/p\u003e\n\u003ch2\u003e版本 {#versions}\u003c/h2\u003e\n\u003cp\u003e上面的生成事实表记录锁定的目录快照和最早观察到的定义。本页自然运行范围是 PostgreSQL 18.6 与 10.21，不能据此推断所有中间版本的行为。\u003c/p\u003e\n\u003ch2\u003e相关 {#related}\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/wiki/sqlstate/08001/\" rel=\"nofollow\"\u003e\u003ccode\u003e08001\u003c/code\u003e — sqlclient_unable_to_establish_sqlconnection\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/wiki/sqlstate/28000/\" rel=\"nofollow\"\u003e\u003ccode\u003e28000\u003c/code\u003e — invalid_authorization_specification\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e来源 {#sources}\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esrc.protocol-invalid-frontend.18.6\u003c/code\u003e — \u003ccode\u003esrc/backend/tcop/postgres.c\u003c/code\u003e at \u003ccode\u003eREL_18_6\u003c/code\u003e commit \u003ccode\u003e724edf9bde9d356724ad384a2e196edc3c9f80f7\u003c/code\u003e; fixed blob SHA-256 \u003ccode\u003e9fb62275b1badf94d01ab351337b60410cd9b3ab1fe63fa9f23d6d2185a21061\u003c/code\u003e (\u003ca href=\"https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/tcop/postgres.c#L454-L456\" rel=\"nofollow\"\u003esource\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esrc.protocol-invalid-frontend.10.23\u003c/code\u003e — \u003ccode\u003esrc/backend/tcop/postgres.c\u003c/code\u003e at \u003ccode\u003eREL_10_23\u003c/code\u003e commit \u003ccode\u003e02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4\u003c/code\u003e; fixed blob SHA-256 \u003ccode\u003ebadfe30749794afa80a799dcdbd142fd4e4732ac1c913002d365549ae5313497\u003c/code\u003e (\u003ca href=\"https://github.com/postgres/postgres/blob/02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4/src/backend/tcop/postgres.c#L430-L432\" rel=\"nofollow\"\u003esource\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esrc.postgres-bind.10.23\u003c/code\u003e — \u003ccode\u003esrc/backend/tcop/postgres.c\u003c/code\u003e at \u003ccode\u003eREL_10_23\u003c/code\u003e commit \u003ccode\u003e02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4\u003c/code\u003e; fixed blob SHA-256 \u003ccode\u003ebadfe30749794afa80a799dcdbd142fd4e4732ac1c913002d365549ae5313497\u003c/code\u003e (\u003ca href=\"https://github.com/postgres/postgres/blob/02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4/src/backend/tcop/postgres.c#L1483-L1580\" rel=\"nofollow\"\u003esource\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esrc.pqformat.10.23\u003c/code\u003e — \u003ccode\u003esrc/backend/libpq/pqformat.c\u003c/code\u003e at \u003ccode\u003eREL_10_23\u003c/code\u003e commit \u003ccode\u003e02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4\u003c/code\u003e; fixed blob SHA-256 \u003ccode\u003e637923dbf2b9d9a0610350784f3b1d7d36a545cd8a6bd2cbe6272d9549873a91\u003c/code\u003e (\u003ca href=\"https://github.com/postgres/postgres/blob/02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4/src/backend/libpq/pqformat.c#L432-L682\" rel=\"nofollow\"\u003esource\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esrc.postgres-sync.10.23\u003c/code\u003e — \u003ccode\u003esrc/backend/tcop/postgres.c\u003c/code\u003e at \u003ccode\u003eREL_10_23\u003c/code\u003e commit \u003ccode\u003e02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4\u003c/code\u003e; fixed blob SHA-256 \u003ccode\u003ebadfe30749794afa80a799dcdbd142fd4e4732ac1c913002d365549ae5313497\u003c/code\u003e (\u003ca href=\"https://github.com/postgres/postgres/blob/02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4/src/backend/tcop/postgres.c#L3863-L3980\" rel=\"nofollow\"\u003esource\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esrc.calls.REL_18_6\u003c/code\u003e / \u003ccode\u003esrc.calls.REL_10_23\u003c/code\u003e — fixed local call scans, SHA-256 \u003ccode\u003e9ee8a0e81d8f0825c5c1ae45583439859a26e602bdd4ce2f2a62aa278867ccbf\u003c/code\u003e / \u003ccode\u003e00d16d3eb01b71ccf1b245c8f3102f9d0ec9f36fb02777b8dd1b99fcb263040c\u003c/code\u003e; these scans preserve the resolved call context used by the claims.\u003c/li\u003e\n\u003c/ul\u003e\n","SourceRevision":"english-manuals:cff3edb58e3a5379935f38c2fa5b82c967b8abd9d6a2f638625ec62be8b27d48","ContentHash":"5890ca233f61ccba1a1c86a7c5e445c7b19a55538bf8ffef11947bf18377c6b8","Payload":{"body_md":"# 08P01 — 协议违规\n\n## 速览 {#at-a-glance}\n\nSQLSTATE `08P01` 是 Class `08` 中的 **protocol_violation**。`08P01` 表示前端/后端消息违反线路协议。选定原始 TCP 案例先完成启动并观察 ReadyForQuery（`Z`），再在合法帧中发送未知前端字节 `Y`，收到 C=`08P01`、S=`FATAL`、主报文 `invalid frontend message type 89`，并在客户端关闭 socket 前读到服务器 EOF。\n\n\n## 含义 {#meaning}\n\n服务器协议解析器先接受启动交换，随后在派发 SQL 前拒绝未知的前端消息类型。选定路径为 FATAL `invalid frontend message type 89`，之后服务器发送 EOF；因此它是受影响 socket 的同步边界，不是 SQL 解析错误。\n\n关键边界在于线路状态，而不是 SQL 文本。客户端可以已经到达 `ReadyForQuery`，却在下一条消息中发送错误类型，选定案例正是如此；启动帧损坏或代理改变帧边界也可能更早失败，并且可能没有可用会话。选定运行覆盖未知消息分派分支；下面的固定源码证据还覆盖不同的 Bind 和 message-buffer 解析分支，其他传输故障必须依据自身的 ErrorResponse 或日志判断。\n\n`08P01` 并不意味着固定的严重级别或 socket 结果。在固定的 extended-query 路径中，Bind 消息的 parameter-format 数量或参数数量不匹配时报告 `ERROR`；顶层循环中止当前命令，等待协议规定的 `Sync`，然后才继续下一个 `ReadyForQuery`。固定的 message-buffer 读取器在缺少字节、字符串无效或报文尾部有数据时也使用 `ERROR`。这些可恢复的协议错误不同于未知消息类型：后者是 `FATAL` 边界，因为服务器不能再信任消息同步状态。\n\n## 诊断 {#diagnosis}\n\n检查驱动或代理的协议版本、消息类型、帧长度、启动模式和连接所有权。选定证据中的 `collector` 是收集原始协议 ErrorResponse（C/S/M 及服务器 EOF）的对象，不是 csvlog/jsonlog。服务器关闭产生 FATAL 的 socket，案例不会复用它；独立的运行器连接能执行 `SELECT 1` 并保持 `IDLE`。这是线路协议边界，不是 SQL 语法，也不是客户端自行创建的 SQLSTATE。\n\n按阶段解释恢复：\n\n- 启动完成前没有会话级事务，驱动可能只有连接异常；如果服务器发过响应，应保留原始线路记录。\n- 启动到达 `Z` 后，未知前端消息会在已建立后端中被拒绝，但选定分支是 `FATAL`，随后服务器关闭该 socket。即使客户端在协议失步前已经开始工作，也不能在这个 socket 上发送 `ROLLBACK`。\n- 经过连接池或代理时，要比较所有者实际发送的字节与服务器期望的协议版本和帧格式。另一条连接上的 `SELECT 1` 只证明可达，不证明在途请求已经提交。\n\n先根据主报文识别分支，再选择恢复动作。`bind message has ... parameter formats` 和 `bind message supplies ... parameters` 指向 extended-query 数量契约；`no data left in message`、`insufficient data left in message`、`invalid string in message` 和 `invalid message format` 指向报文主体或边界损坏。这些源码定义的 `ERROR` 变体在驱动仍能保持帧边界时可能通过 `Sync` 恢复；带 `FATAL` 的 `invalid frontend message type ...` 则表示选定 socket 已经失效。\n\n## 处理 {#response}\n\n收到 `FATAL` 或服务器 EOF 时，关闭并丢弃受影响的 socket，修正协议或代理帧后重新连接。extended-query 的 `ERROR` 应让驱动发送协议有效的 `Sync` 并等待 `ReadyForQuery`，然后检查事务状态；`Sync` 不会回滚失败的显式事务，状态为 `E` 时仍须执行 `ROLLBACK` 或回到有意建立的保存点。若非幂等请求在途中，重放前先核对结果。独立探针只证明新连接可用。\n\n将选定案例视为会话终止分支：读到服务器 EOF 后建立新连接，并且只重做已核对且具幂等性的操作。如果违规发生在会话建立前，应先修正启动或代理配置。只有客户端解析器异常或 socket 关闭而没有服务器 `C` 字段，不能把事件标成 `08P01`。\n\n不要自行拼接字节，也不要把事务当作已经提交。若驱动无法保持报文边界或不实现 Sync 契约，应丢弃连接并核对请求结果。这一源码流程不改变选定未知字节运行：该案例的 `FATAL` socket 必须丢弃。\n\n## 报文 {#messages}\n\n固定的协议解析路径以 `FATAL` 发出主报文 `invalid frontend message type %d`，其中字节数值是动态的。选定的 `Y` 字节记录为 `89`。SQLSTATE 的依据是原始 ErrorResponse，而不是客户端异常。\n\n其他固定源码分支以 `ERROR` 发出以下主报文模板：\n\n- `bind message has %d parameter formats but %d parameters`\n- `bind message supplies %d parameters, but prepared statement \"%s\" requires %d`\n- `no data left in message`\n- `insufficient data left in message`\n- `invalid string in message`\n- `invalid message format`\n\n这些 Bind 和 message-buffer 变体在本页中是源码证据，不是新增运行观察，也不会全部终止 socket。\n\n选定的线路顺序是：启动交换 → `Z` ReadyForQuery → 合法帧中的类型字节 `Y`（十进制 `89`）→ ErrorResponse `C=08P01`、`S=FATAL`、`M=invalid frontend message type 89` → 服务器 EOF。collector 直接收集这些协议字段和 EOF，既不是 csvlog/jsonlog 记录，也不是后续独立探针。\n\n## 代表案例 {#case}\n\n\nSQL 探针用于检查独立连接。真实触发是运行器拥有的 TCP 握手后发送未知前端消息字节，不能只用 SQL 表达。\n\n```sql\nSELECT 1;\n```\n\n\n18.6 服务器记录为 C=`08P01`、S=`FATAL`、主报文 `invalid frontend message type 89`；启动到达 `Z`，服务器 EOF 断言为 `True`，独立探针返回 `1`，状态 `IDLE`。因此没有复用触发错误的连接。\n\n可下载的案例与证据投影分别是 [`08P01 案例 JSON`](#cases) 和 [`作者证据`](#sources)。运行器清单为 `verify/cases/08P01/cases.json`；发布前会将页面 SQL 与共享注册表比对。\n\n## 版本 {#versions}\n\n上面的生成事实表记录锁定的目录快照和最早观察到的定义。本页自然运行范围是 PostgreSQL 18.6 与 10.21，不能据此推断所有中间版本的行为。\n\n## 相关 {#related}\n\n- [`08001` — sqlclient_unable_to_establish_sqlconnection](/wiki/sqlstate/08001/)\n- [`28000` — invalid_authorization_specification](/wiki/sqlstate/28000/)\n\n## 来源 {#sources}\n\n- `src.protocol-invalid-frontend.18.6` — `src/backend/tcop/postgres.c` at `REL_18_6` commit `724edf9bde9d356724ad384a2e196edc3c9f80f7`; fixed blob SHA-256 `9fb62275b1badf94d01ab351337b60410cd9b3ab1fe63fa9f23d6d2185a21061` ([source](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/tcop/postgres.c#L454-L456)).\n- `src.protocol-invalid-frontend.10.23` — `src/backend/tcop/postgres.c` at `REL_10_23` commit `02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4`; fixed blob SHA-256 `badfe30749794afa80a799dcdbd142fd4e4732ac1c913002d365549ae5313497` ([source](https://github.com/postgres/postgres/blob/02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4/src/backend/tcop/postgres.c#L430-L432)).\n- `src.postgres-bind.10.23` — `src/backend/tcop/postgres.c` at `REL_10_23` commit `02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4`; fixed blob SHA-256 `badfe30749794afa80a799dcdbd142fd4e4732ac1c913002d365549ae5313497` ([source](https://github.com/postgres/postgres/blob/02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4/src/backend/tcop/postgres.c#L1483-L1580)).\n- `src.pqformat.10.23` — `src/backend/libpq/pqformat.c` at `REL_10_23` commit `02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4`; fixed blob SHA-256 `637923dbf2b9d9a0610350784f3b1d7d36a545cd8a6bd2cbe6272d9549873a91` ([source](https://github.com/postgres/postgres/blob/02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4/src/backend/libpq/pqformat.c#L432-L682)).\n- `src.postgres-sync.10.23` — `src/backend/tcop/postgres.c` at `REL_10_23` commit `02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4`; fixed blob SHA-256 `badfe30749794afa80a799dcdbd142fd4e4732ac1c913002d365549ae5313497` ([source](https://github.com/postgres/postgres/blob/02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4/src/backend/tcop/postgres.c#L3863-L3980)).\n- `src.calls.REL_18_6` / `src.calls.REL_10_23` — fixed local call scans, SHA-256 `9ee8a0e81d8f0825c5c1ae45583439859a26e602bdd4ce2f2a62aa278867ccbf` / `00d16d3eb01b71ccf1b245c8f3102f9d0ec9f36fb02777b8dd1b99fcb263040c`; these scans preserve the resolved call context used by the claims.\n","description":"PostgreSQL SQLSTATE 08P01（协议违规，protocol_violation）的源码证据、诊断与处理参考。","is_stale":false,"name":"协议违规","sections":[{"anchor":"","heading":"","html":"\u0026lt;h1\u0026gt;08P01 — 协议违规\u0026lt;/h1\u0026gt;"},{"anchor":"at-a-glance","heading":"速览","html":"\u003cp\u003eSQLSTATE \u003ccode\u003e08P01\u003c/code\u003e 是 Class \u003ccode\u003e08\u003c/code\u003e 中的 \u003cstrong\u003eprotocol_violation\u003c/strong\u003e。\u003ccode\u003e08P01\u003c/code\u003e 表示前端/后端消息违反线路协议。选定原始 TCP 案例先完成启动并观察 ReadyForQuery（\u003ccode\u003eZ\u003c/code\u003e），再在合法帧中发送未知前端字节 \u003ccode\u003eY\u003c/code\u003e，收到 C=\u003ccode\u003e08P01\u003c/code\u003e、S=\u003ccode\u003eFATAL\u003c/code\u003e、主报文 \u003ccode\u003einvalid frontend message type 89\u003c/code\u003e，并在客户端关闭 socket 前读到服务器 EOF。\u003c/p\u003e"},{"anchor":"meaning","heading":"含义","html":"\u003cp\u003e服务器协议解析器先接受启动交换，随后在派发 SQL 前拒绝未知的前端消息类型。选定路径为 FATAL \u003ccode\u003einvalid frontend message type 89\u003c/code\u003e，之后服务器发送 EOF；因此它是受影响 socket 的同步边界，不是 SQL 解析错误。\u003c/p\u003e\n\u003cp\u003e关键边界在于线路状态，而不是 SQL 文本。客户端可以已经到达 \u003ccode\u003eReadyForQuery\u003c/code\u003e，却在下一条消息中发送错误类型，选定案例正是如此；启动帧损坏或代理改变帧边界也可能更早失败，并且可能没有可用会话。选定运行覆盖未知消息分派分支；下面的固定源码证据还覆盖不同的 Bind 和 message-buffer 解析分支，其他传输故障必须依据自身的 ErrorResponse 或日志判断。\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e08P01\u003c/code\u003e 并不意味着固定的严重级别或 socket 结果。在固定的 extended-query 路径中，Bind 消息的 parameter-format 数量或参数数量不匹配时报告 \u003ccode\u003eERROR\u003c/code\u003e；顶层循环中止当前命令，等待协议规定的 \u003ccode\u003eSync\u003c/code\u003e，然后才继续下一个 \u003ccode\u003eReadyForQuery\u003c/code\u003e。固定的 message-buffer 读取器在缺少字节、字符串无效或报文尾部有数据时也使用 \u003ccode\u003eERROR\u003c/code\u003e。这些可恢复的协议错误不同于未知消息类型：后者是 \u003ccode\u003eFATAL\u003c/code\u003e 边界，因为服务器不能再信任消息同步状态。\u003c/p\u003e"},{"anchor":"diagnosis","heading":"诊断","html":"\u003cp\u003e检查驱动或代理的协议版本、消息类型、帧长度、启动模式和连接所有权。选定证据中的 \u003ccode\u003ecollector\u003c/code\u003e 是收集原始协议 ErrorResponse（C/S/M 及服务器 EOF）的对象，不是 csvlog/jsonlog。服务器关闭产生 FATAL 的 socket，案例不会复用它；独立的运行器连接能执行 \u003ccode\u003eSELECT 1\u003c/code\u003e 并保持 \u003ccode\u003eIDLE\u003c/code\u003e。这是线路协议边界，不是 SQL 语法，也不是客户端自行创建的 SQLSTATE。\u003c/p\u003e\n\u003cp\u003e按阶段解释恢复：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e启动完成前没有会话级事务，驱动可能只有连接异常；如果服务器发过响应，应保留原始线路记录。\u003c/li\u003e\n\u003cli\u003e启动到达 \u003ccode\u003eZ\u003c/code\u003e 后，未知前端消息会在已建立后端中被拒绝，但选定分支是 \u003ccode\u003eFATAL\u003c/code\u003e，随后服务器关闭该 socket。即使客户端在协议失步前已经开始工作，也不能在这个 socket 上发送 \u003ccode\u003eROLLBACK\u003c/code\u003e。\u003c/li\u003e\n\u003cli\u003e经过连接池或代理时，要比较所有者实际发送的字节与服务器期望的协议版本和帧格式。另一条连接上的 \u003ccode\u003eSELECT 1\u003c/code\u003e 只证明可达，不证明在途请求已经提交。\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e先根据主报文识别分支，再选择恢复动作。\u003ccode\u003ebind message has ... parameter formats\u003c/code\u003e 和 \u003ccode\u003ebind message supplies ... parameters\u003c/code\u003e 指向 extended-query 数量契约；\u003ccode\u003eno data left in message\u003c/code\u003e、\u003ccode\u003einsufficient data left in message\u003c/code\u003e、\u003ccode\u003einvalid string in message\u003c/code\u003e 和 \u003ccode\u003einvalid message format\u003c/code\u003e 指向报文主体或边界损坏。这些源码定义的 \u003ccode\u003eERROR\u003c/code\u003e 变体在驱动仍能保持帧边界时可能通过 \u003ccode\u003eSync\u003c/code\u003e 恢复；带 \u003ccode\u003eFATAL\u003c/code\u003e 的 \u003ccode\u003einvalid frontend message type ...\u003c/code\u003e 则表示选定 socket 已经失效。\u003c/p\u003e"},{"anchor":"response","heading":"处理","html":"\u003cp\u003e收到 \u003ccode\u003eFATAL\u003c/code\u003e 或服务器 EOF 时，关闭并丢弃受影响的 socket，修正协议或代理帧后重新连接。extended-query 的 \u003ccode\u003eERROR\u003c/code\u003e 应让驱动发送协议有效的 \u003ccode\u003eSync\u003c/code\u003e 并等待 \u003ccode\u003eReadyForQuery\u003c/code\u003e，然后检查事务状态；\u003ccode\u003eSync\u003c/code\u003e 不会回滚失败的显式事务，状态为 \u003ccode\u003eE\u003c/code\u003e 时仍须执行 \u003ccode\u003eROLLBACK\u003c/code\u003e 或回到有意建立的保存点。若非幂等请求在途中，重放前先核对结果。独立探针只证明新连接可用。\u003c/p\u003e\n\u003cp\u003e将选定案例视为会话终止分支：读到服务器 EOF 后建立新连接，并且只重做已核对且具幂等性的操作。如果违规发生在会话建立前，应先修正启动或代理配置。只有客户端解析器异常或 socket 关闭而没有服务器 \u003ccode\u003eC\u003c/code\u003e 字段，不能把事件标成 \u003ccode\u003e08P01\u003c/code\u003e。\u003c/p\u003e\n\u003cp\u003e不要自行拼接字节，也不要把事务当作已经提交。若驱动无法保持报文边界或不实现 Sync 契约，应丢弃连接并核对请求结果。这一源码流程不改变选定未知字节运行：该案例的 \u003ccode\u003eFATAL\u003c/code\u003e socket 必须丢弃。\u003c/p\u003e"},{"anchor":"messages","heading":"报文","html":"\u003cp\u003e固定的协议解析路径以 \u003ccode\u003eFATAL\u003c/code\u003e 发出主报文 \u003ccode\u003einvalid frontend message type %d\u003c/code\u003e，其中字节数值是动态的。选定的 \u003ccode\u003eY\u003c/code\u003e 字节记录为 \u003ccode\u003e89\u003c/code\u003e。SQLSTATE 的依据是原始 ErrorResponse，而不是客户端异常。\u003c/p\u003e\n\u003cp\u003e其他固定源码分支以 \u003ccode\u003eERROR\u003c/code\u003e 发出以下主报文模板：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ebind message has %d parameter formats but %d parameters\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ebind message supplies %d parameters, but prepared statement \"%s\" requires %d\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eno data left in message\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003einsufficient data left in message\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003einvalid string in message\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003einvalid message format\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e这些 Bind 和 message-buffer 变体在本页中是源码证据，不是新增运行观察，也不会全部终止 socket。\u003c/p\u003e\n\u003cp\u003e选定的线路顺序是：启动交换 → \u003ccode\u003eZ\u003c/code\u003e ReadyForQuery → 合法帧中的类型字节 \u003ccode\u003eY\u003c/code\u003e（十进制 \u003ccode\u003e89\u003c/code\u003e）→ ErrorResponse \u003ccode\u003eC=08P01\u003c/code\u003e、\u003ccode\u003eS=FATAL\u003c/code\u003e、\u003ccode\u003eM=invalid frontend message type 89\u003c/code\u003e → 服务器 EOF。collector 直接收集这些协议字段和 EOF，既不是 csvlog/jsonlog 记录，也不是后续独立探针。\u003c/p\u003e"},{"anchor":"case","heading":"代表案例","html":"\u003cp\u003eSQL 探针用于检查独立连接。真实触发是运行器拥有的 TCP 握手后发送未知前端消息字节，不能只用 SQL 表达。\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-sql\"\u003eSELECT 1;\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e18.6 服务器记录为 C=\u003ccode\u003e08P01\u003c/code\u003e、S=\u003ccode\u003eFATAL\u003c/code\u003e、主报文 \u003ccode\u003einvalid frontend message type 89\u003c/code\u003e；启动到达 \u003ccode\u003eZ\u003c/code\u003e，服务器 EOF 断言为 \u003ccode\u003eTrue\u003c/code\u003e，独立探针返回 \u003ccode\u003e1\u003c/code\u003e，状态 \u003ccode\u003eIDLE\u003c/code\u003e。因此没有复用触发错误的连接。\u003c/p\u003e\n\u003cp\u003e可下载的案例与证据投影分别是 \u003ca href=\"#cases\"\u003e\u003ccode\u003e08P01 案例 JSON\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"#sources\"\u003e\u003ccode\u003e作者证据\u003c/code\u003e\u003c/a\u003e。运行器清单为 \u003ccode\u003everify/cases/08P01/cases.json\u003c/code\u003e；发布前会将页面 SQL 与共享注册表比对。\u003c/p\u003e"},{"anchor":"versions","heading":"版本","html":"\u003cp\u003e上面的生成事实表记录锁定的目录快照和最早观察到的定义。本页自然运行范围是 PostgreSQL 18.6 与 10.21，不能据此推断所有中间版本的行为。\u003c/p\u003e"},{"anchor":"related","heading":"相关","html":"\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/wiki/sqlstate/08001/\"\u003e\u003ccode\u003e08001\u003c/code\u003e — sqlclient_unable_to_establish_sqlconnection\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/wiki/sqlstate/28000/\"\u003e\u003ccode\u003e28000\u003c/code\u003e — invalid_authorization_specification\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e"},{"anchor":"sources","heading":"来源","html":"\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esrc.protocol-invalid-frontend.18.6\u003c/code\u003e — \u003ccode\u003esrc/backend/tcop/postgres.c\u003c/code\u003e at \u003ccode\u003eREL_18_6\u003c/code\u003e commit \u003ccode\u003e724edf9bde9d356724ad384a2e196edc3c9f80f7\u003c/code\u003e; fixed blob SHA-256 \u003ccode\u003e9fb62275b1badf94d01ab351337b60410cd9b3ab1fe63fa9f23d6d2185a21061\u003c/code\u003e (\u003ca href=\"https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/tcop/postgres.c#L454-L456\"\u003esource\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esrc.protocol-invalid-frontend.10.23\u003c/code\u003e — \u003ccode\u003esrc/backend/tcop/postgres.c\u003c/code\u003e at \u003ccode\u003eREL_10_23\u003c/code\u003e commit \u003ccode\u003e02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4\u003c/code\u003e; fixed blob SHA-256 \u003ccode\u003ebadfe30749794afa80a799dcdbd142fd4e4732ac1c913002d365549ae5313497\u003c/code\u003e (\u003ca href=\"https://github.com/postgres/postgres/blob/02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4/src/backend/tcop/postgres.c#L430-L432\"\u003esource\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esrc.postgres-bind.10.23\u003c/code\u003e — \u003ccode\u003esrc/backend/tcop/postgres.c\u003c/code\u003e at \u003ccode\u003eREL_10_23\u003c/code\u003e commit \u003ccode\u003e02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4\u003c/code\u003e; fixed blob SHA-256 \u003ccode\u003ebadfe30749794afa80a799dcdbd142fd4e4732ac1c913002d365549ae5313497\u003c/code\u003e (\u003ca href=\"https://github.com/postgres/postgres/blob/02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4/src/backend/tcop/postgres.c#L1483-L1580\"\u003esource\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esrc.pqformat.10.23\u003c/code\u003e — \u003ccode\u003esrc/backend/libpq/pqformat.c\u003c/code\u003e at \u003ccode\u003eREL_10_23\u003c/code\u003e commit \u003ccode\u003e02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4\u003c/code\u003e; fixed blob SHA-256 \u003ccode\u003e637923dbf2b9d9a0610350784f3b1d7d36a545cd8a6bd2cbe6272d9549873a91\u003c/code\u003e (\u003ca href=\"https://github.com/postgres/postgres/blob/02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4/src/backend/libpq/pqformat.c#L432-L682\"\u003esource\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esrc.postgres-sync.10.23\u003c/code\u003e — \u003ccode\u003esrc/backend/tcop/postgres.c\u003c/code\u003e at \u003ccode\u003eREL_10_23\u003c/code\u003e commit \u003ccode\u003e02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4\u003c/code\u003e; fixed blob SHA-256 \u003ccode\u003ebadfe30749794afa80a799dcdbd142fd4e4732ac1c913002d365549ae5313497\u003c/code\u003e (\u003ca href=\"https://github.com/postgres/postgres/blob/02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4/src/backend/tcop/postgres.c#L3863-L3980\"\u003esource\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esrc.calls.REL_18_6\u003c/code\u003e / \u003ccode\u003esrc.calls.REL_10_23\u003c/code\u003e — fixed local call scans, SHA-256 \u003ccode\u003e9ee8a0e81d8f0825c5c1ae45583439859a26e602bdd4ce2f2a62aa278867ccbf\u003c/code\u003e / \u003ccode\u003e00d16d3eb01b71ccf1b245c8f3102f9d0ec9f36fb02777b8dd1b99fcb263040c\u003c/code\u003e; these scans preserve the resolved call context used by the claims.\u003c/li\u003e\n\u003c/ul\u003e"}],"summary":"前后端消息违反线路协议，通常是 FATAL。","title":"08P01 — 协议违规（protocol_violation）","translation_source_rev":"52bbab7ed2c06515ec654d1e122d29da72ce3ff3ff75f55e38e96c133a32e882"}},"RequestedLocale":"zh-Hans","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":"08","class_name":"Connection Exception","condition_name":"protocol_violation","condition_names":["protocol_violation"],"definition_changes":[],"english_manuals":{"10":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"9607b57e9f639b61785677ba4d226f5889fe1d19c8bf55a3337691899a9073cd","slug":"10"},"lang":"en","sqlstate":"08P01"},"11":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"3a024e38263ad77de228eed7930b842b42dc1d5cab9ca3727be8eed872ec9539","slug":"11"},"lang":"en","sqlstate":"08P01"},"12":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"1444bd6a138537cd75be88a220ee9472ac528f0cfc58758e49636d85455efe98","slug":"12"},"lang":"en","sqlstate":"08P01"},"13":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"4a3ef8af218e5736dfde8660ba609e84233b6b3bac7e0210ff8724cf1b27b2db","slug":"13"},"lang":"en","sqlstate":"08P01"},"14":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"1c12e83304e0f4ff64c9d98ca5e3007df6756932ed19867a4fa0e0650f6c5751","slug":"14"},"lang":"en","sqlstate":"08P01"},"15":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"2161f58f6e87f6535b3b1f3d4661427bb6765f4f6b074fcc16fac97594b50599","slug":"15"},"lang":"en","sqlstate":"08P01"},"16":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"928e705933d7c3d018ae3fba9d800b34e6325746d157339dce878473c519d100","slug":"16"},"lang":"en","sqlstate":"08P01"},"17":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"868135520af87351e3ea1ba42656111cbd2d157d98e1fef05ea158ac5729d8b1","slug":"17"},"lang":"en","sqlstate":"08P01"},"18":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"56dacf78e618ff0fd8c533e05db597b80d7ebbad7f8e512a888217d0640aa328","slug":"18"},"lang":"en","sqlstate":"08P01"},"19":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"63fb8d1aa9f494eeab9d0f8542a2b673f7746ee41ae2689d19403cb3cc425a5c","slug":"19"},"lang":"en","sqlstate":"08P01"},"20":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"0d3f602127cd137cf343b32d5fa78f175eeb6cdcb6353b1f6f998ede6cb7b911","slug":"devel"},"lang":"en","sqlstate":"08P01"},"8.1":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"0177b8818643540dec7bbef1fe92b60a3961debd52a68412301647ca146c7f2d","slug":"8.1"},"lang":"en","sqlstate":"08P01"},"8.2":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"d65bf7cff5958c304352c974e477183e21efe9bd68e03786001874653bf66963","slug":"8.2"},"lang":"en","sqlstate":"08P01"},"8.3":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"118059002973cdec5466ed3cabe7c9370b4c93d8ab542b8661d0eeb50cf6950d","slug":"8.3"},"lang":"en","sqlstate":"08P01"},"8.4":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"d63b10001be0581484022e33b78124a36bb3bd68d3ebe022cd7dfb375233432f","slug":"8.4"},"lang":"en","sqlstate":"08P01"},"9.0":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"658fc09c4c10eed7ac7dea4ed3e3eff8cc5791eb5af26b7b4a31b0f863b316db","slug":"9.0"},"lang":"en","sqlstate":"08P01"},"9.1":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"2d118b06c3b644c28b3ddefe9e4bef99a180321582209332372a5318f5bf8d1c","slug":"9.1"},"lang":"en","sqlstate":"08P01"},"9.2":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"2a37575b39c858d37c58fc4de6a16109554fd3306602294180d78faa1170d2cd","slug":"9.2"},"lang":"en","sqlstate":"08P01"},"9.3":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"2214b6869d764f7fba7221aefcdf1ab049b55ad51d63aa52054f3cd2c2533ae9","slug":"9.3"},"lang":"en","sqlstate":"08P01"},"9.4":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"7243e2d653befe88733222ede67958f0c4b7fae967b58eb97807aeb3f32b4096","slug":"9.4"},"lang":"en","sqlstate":"08P01"},"9.5":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"d40bc67cb331f1e4ccc0821ff57832c6c230edb0dce3ba4249defd21ae7ea29d","slug":"9.5"},"lang":"en","sqlstate":"08P01"},"9.6":{"aliases":[],"class_name":"Connection Exception","condition_name":"protocol_violation","doc":{"anchor":"ERRCODES-APPENDIX","file":"errcodes-appendix.html","lang":"en","sha256":"2ab55e487571c8998ec39b3d1bbae29ac6fc5c310875bee422d9a7b8b3fde5b3","slug":"9.6"},"lang":"en","sqlstate":"08P01"}},"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_PROTOCOL_VIOLATION"],"manual_presence":["8.1","8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6","10","11","12","13","14","15","16","17","18","19","20"],"pre9_first_observed":"7.4","pre9_introduction_boundary":null,"pre9_last_observed":"8.4.22","pre9_presence_intervals":[{"end":"7.4.30","end_major":"7.4","end_tag":"REL7_4_30","evidence_count":31,"position":0,"start":"7.4","start_major":"7.4","start_tag":"REL7_4"},{"end":"8.0.26","end_major":"8.0","end_tag":"REL8_0_26","evidence_count":27,"position":1,"start":"8.0.0","start_major":"8.0","start_tag":"REL8_0_0"},{"end":"8.1.23","end_major":"8.1","end_tag":"REL8_1_23","evidence_count":24,"position":2,"start":"8.1.0","start_major":"8.1","start_tag":"REL8_1_0"},{"end":"8.2.23","end_major":"8.2","end_tag":"REL8_2_23","evidence_count":24,"position":3,"start":"8.2.0","start_major":"8.2","start_tag":"REL8_2_0"},{"end":"8.3.23","end_major":"8.3","end_tag":"REL8_3_23","evidence_count":24,"position":4,"start":"8.3.0","start_major":"8.3","start_tag":"REL8_3_0"},{"end":"8.4.22","end_major":"8.4","end_tag":"REL8_4_22","evidence_count":23,"position":5,"start":"8.4.0","start_major":"8.4","start_tag":"REL8_4_0"}],"pre9_status":"present","presence_intervals":[{"end":"9.0.23","end_major":"9.0","end_tag":"REL9_0_23","evidence_count":24,"position":0,"start":"9.0.0","start_major":"9.0","start_tag":"REL9_0_0"},{"end":"9.1.24","end_major":"9.1","end_tag":"REL9_1_24","evidence_count":25,"position":1,"start":"9.1.0","start_major":"9.1","start_tag":"REL9_1_0"},{"end":"9.2.24","end_major":"9.2","end_tag":"REL9_2_24","evidence_count":25,"position":2,"start":"9.2.0","start_major":"9.2","start_tag":"REL9_2_0"},{"end":"9.3.25","end_major":"9.3","end_tag":"REL9_3_25","evidence_count":26,"position":3,"start":"9.3.0","start_major":"9.3","start_tag":"REL9_3_0"},{"end":"9.4.26","end_major":"9.4","end_tag":"REL9_4_26","evidence_count":27,"position":4,"start":"9.4.0","start_major":"9.4","start_tag":"REL9_4_0"},{"end":"9.5.25","end_major":"9.5","end_tag":"REL9_5_25","evidence_count":26,"position":5,"start":"9.5.0","start_major":"9.5","start_tag":"REL9_5_0"},{"end":"9.6.24","end_major":"9.6","end_tag":"REL9_6_24","evidence_count":25,"position":6,"start":"9.6.0","start_major":"9.6","start_tag":"REL9_6_0"},{"end":"10.23","end_major":"10","end_tag":"REL_10_23","evidence_count":24,"position":7,"start":"10.0","start_major":"10","start_tag":"REL_10_0"},{"end":"11.22","end_major":"11","end_tag":"REL_11_22","evidence_count":23,"position":8,"start":"11.0","start_major":"11","start_tag":"REL_11_0"},{"end":"12.22","end_major":"12","end_tag":"REL_12_22","evidence_count":23,"position":9,"start":"12.0","start_major":"12","start_tag":"REL_12_0"},{"end":"13.23","end_major":"13","end_tag":"REL_13_23","evidence_count":24,"position":10,"start":"13.0","start_major":"13","start_tag":"REL_13_0"},{"end":"14.24","end_major":"14","end_tag":"REL_14_24","evidence_count":25,"position":11,"start":"14.0","start_major":"14","start_tag":"REL_14_0"},{"end":"15.19","end_major":"15","end_tag":"REL_15_19","evidence_count":20,"position":12,"start":"15.0","start_major":"15","start_tag":"REL_15_0"},{"end":"16.15","end_major":"16","end_tag":"REL_16_15","evidence_count":16,"position":13,"start":"16.0","start_major":"16","start_tag":"REL_16_0"},{"end":"17.11","end_major":"17","end_tag":"REL_17_11","evidence_count":12,"position":14,"start":"17.0","start_major":"17","start_tag":"REL_17_0"},{"end":"18.4","end_major":"18","end_tag":"REL_18_4","evidence_count":5,"position":15,"start":"18.0","start_major":"18","start_tag":"REL_18_0"},{"end":"18.6","end_major":"18","end_tag":"REL_18_6","evidence_count":1,"position":16,"start":"18.6","start_major":"18","start_tag":"REL_18_6"}],"present_in_snapshots":["9.0.23","9.1.24","9.2.24","9.3.25","9.4.26","9.5.25","9.6.24","10.23","11.22","12.22","13.23","14.24","15.19","16.15","17.11","18.6","19beta3"],"preview_in_snapshots":["19beta3"],"primary_macro":"ERRCODE_PROTOCOL_VIOLATION","removed":null,"schema_version":2,"severity_classes":["E"],"sources":[{"channel":"formal","code_count":0,"commit":"3f78df10b168b78232fdbefe1d9d84c37f5aaaab","id":"postgresql:REL7_4:src/include/utils/errcodes.h","major":"7.4","path":"src/include/utils/errcodes.h","raw_path":".cache/catalogue/pre9/raw/definition/REL7_4.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/3f78df10b168b78232fdbefe1d9d84c37f5aaaab/src/include/utils/errcodes.h","record_count":0,"release":"7.4","repository":"https://github.com/postgres/postgres.git","sha256":"85e0d54037f0c49a06c909a4908fa24c19734c08f7f9611e5fbeb1b39745a539","size":18146,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL7_4","url":"https://github.com/postgres/postgres/blob/3f78df10b168b78232fdbefe1d9d84c37f5aaaab/src/include/utils/errcodes.h","version":"7.4"},{"channel":"formal","code_count":0,"commit":"c22b7eccd368754ea96865c046764382ab05db4b","id":"postgresql:REL8_0_0:src/include/utils/errcodes.h","major":"8.0","path":"src/include/utils/errcodes.h","raw_path":".cache/catalogue/pre9/raw/definition/REL8_0_0.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/c22b7eccd368754ea96865c046764382ab05db4b/src/include/utils/errcodes.h","record_count":0,"release":"8.0.0","repository":"https://github.com/postgres/postgres.git","sha256":"8b928e18943235ff0543eab22189ade1a018de43d72275f28b79df7d14e47849","size":20020,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL8_0_0","url":"https://github.com/postgres/postgres/blob/c22b7eccd368754ea96865c046764382ab05db4b/src/include/utils/errcodes.h","version":"8.0.0"},{"channel":"formal","code_count":0,"commit":"2a80c3c4dc56a44a26805c889ef71b614e769266","id":"postgresql:REL8_1_0:src/include/utils/errcodes.h","major":"8.1","path":"src/include/utils/errcodes.h","raw_path":".cache/catalogue/pre9/raw/definition/REL8_1_0.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/2a80c3c4dc56a44a26805c889ef71b614e769266/src/include/utils/errcodes.h","record_count":0,"release":"8.1.0","repository":"https://github.com/postgres/postgres.git","sha256":"52cab83d60a3b5fec10786b65bbfba39ef7404bc0e4599f6c239f2b56ad6a8ed","size":20109,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL8_1_0","url":"https://github.com/postgres/postgres/blob/2a80c3c4dc56a44a26805c889ef71b614e769266/src/include/utils/errcodes.h","version":"8.1.0"},{"channel":"formal","code_count":0,"commit":"2f52d7260ceac8e57613516d82a7404fbf3d137b","id":"postgresql:REL8_2_0:src/include/utils/errcodes.h","major":"8.2","path":"src/include/utils/errcodes.h","raw_path":".cache/catalogue/pre9/raw/definition/REL8_2_0.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/2f52d7260ceac8e57613516d82a7404fbf3d137b/src/include/utils/errcodes.h","record_count":0,"release":"8.2.0","repository":"https://github.com/postgres/postgres.git","sha256":"1f13bd962e663bf5222198a4b30fb016f1f21141b2c4ed2be351595ecf04f269","size":20247,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL8_2_0","url":"https://github.com/postgres/postgres/blob/2f52d7260ceac8e57613516d82a7404fbf3d137b/src/include/utils/errcodes.h","version":"8.2.0"},{"channel":"formal","code_count":0,"commit":"9e647a13872a5f34dc0009566925c5c352463780","id":"postgresql:REL8_3_0:src/include/utils/errcodes.h","major":"8.3","path":"src/include/utils/errcodes.h","raw_path":".cache/catalogue/pre9/raw/definition/REL8_3_0.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/9e647a13872a5f34dc0009566925c5c352463780/src/include/utils/errcodes.h","record_count":0,"release":"8.3.0","repository":"https://github.com/postgres/postgres.git","sha256":"8df5862003e7906ea11cf626431a426d1c7ae65d4fb85e526a46e29059b8e346","size":20650,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL8_3_0","url":"https://github.com/postgres/postgres/blob/9e647a13872a5f34dc0009566925c5c352463780/src/include/utils/errcodes.h","version":"8.3.0"},{"channel":"formal","code_count":0,"commit":"4d53a2f9699547bdc12831d2860c9d44c465e805","id":"postgresql:REL8_4_0:src/include/utils/errcodes.h","major":"8.4","path":"src/include/utils/errcodes.h","raw_path":".cache/catalogue/pre9/raw/definition/REL8_4_0.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/4d53a2f9699547bdc12831d2860c9d44c465e805/src/include/utils/errcodes.h","record_count":0,"release":"8.4.0","repository":"https://github.com/postgres/postgres.git","sha256":"b1a08b6c8e85631fe7a849d531841247a641bb799bca739c929a78e6702d3ab4","size":21169,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL8_4_0","url":"https://github.com/postgres/postgres/blob/4d53a2f9699547bdc12831d2860c9d44c465e805/src/include/utils/errcodes.h","version":"8.4.0"},{"channel":"formal","code_count":0,"commit":"8dd387500abe58a684c559f20c26ac08884b0c5d","id":"postgresql:REL8_4_22:src/include/utils/errcodes.h","major":"8.4","path":"src/include/utils/errcodes.h","raw_path":".cache/catalogue/pre9/raw/definition/REL8_4_22.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/8dd387500abe58a684c559f20c26ac08884b0c5d/src/include/utils/errcodes.h","record_count":0,"release":"8.4.22","repository":"https://github.com/postgres/postgres.git","sha256":"43fd9924243ff5bb5f51b5e7a5e5d8a011458beb5bb669b1d5b6122dac515936","size":21170,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL8_4_22","url":"https://github.com/postgres/postgres/blob/8dd387500abe58a684c559f20c26ac08884b0c5d/src/include/utils/errcodes.h","version":"8.4.22"},{"blob_id":"sha256:c814fbe5a5d2a61abe5bcf5c7754a9d339664aa4ee73f46fa11ed14966ff6713","channel":"formal","code_count":198,"commit":"861861edcc04a6e3ebdfe363311f122e2b226196","id":"postgresql:REL9_0_0:src/include/utils/errcodes.h","major":"9.0","parsed_path":"raw/definitions/REL9_0_0.parsed.json","path":"src/include/utils/errcodes.h","raw_path":"raw/definitions/REL9_0_0.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/861861edcc04a6e3ebdfe363311f122e2b226196/src/include/utils/errcodes.h","record_count":204,"release":"9.0.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"c814fbe5a5d2a61abe5bcf5c7754a9d339664aa4ee73f46fa11ed14966ff6713","size":21313,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL9_0_0","url":"https://github.com/postgres/postgres/blob/861861edcc04a6e3ebdfe363311f122e2b226196/src/include/utils/errcodes.h","version":"9.0.0"},{"blob_id":"sha256:e23d5129578249fc242f2737be2a577d6714b57917aad9deaf5ec156cadc52fd","channel":"formal","code_count":199,"commit":"ffb39e1aedcdd7b77ec920221b27ab02c40ddbfc","id":"postgresql:REL9_0_4:src/include/utils/errcodes.h","major":"9.0","parsed_path":"raw/definitions/REL9_0_4.parsed.json","path":"src/include/utils/errcodes.h","raw_path":"raw/definitions/REL9_0_4.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/ffb39e1aedcdd7b77ec920221b27ab02c40ddbfc/src/include/utils/errcodes.h","record_count":205,"release":"9.0.4","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"e23d5129578249fc242f2737be2a577d6714b57917aad9deaf5ec156cadc52fd","size":21384,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL9_0_4","url":"https://github.com/postgres/postgres/blob/ffb39e1aedcdd7b77ec920221b27ab02c40ddbfc/src/include/utils/errcodes.h","version":"9.0.4"},{"blob_id":"sha256:5b77881aab6f0d659fb3295e1adf53799a02c3d5680200bb10ff9f15d741f924","channel":"formal","code_count":199,"commit":"391aa8aac11fe78f3b2f5743b56e78b0ad6a5d84","id":"postgresql:REL9_0_18:src/include/utils/errcodes.h","major":"9.0","parsed_path":"raw/definitions/REL9_0_18.parsed.json","path":"src/include/utils/errcodes.h","raw_path":"raw/definitions/REL9_0_18.h","raw_url":"https://raw.githubusercontent.com/postgres/postgres/391aa8aac11fe78f3b2f5743b56e78b0ad6a5d84/src/include/utils/errcodes.h","record_count":205,"release":"9.0.18","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"5b77881aab6f0d659fb3295e1adf53799a02c3d5680200bb10ff9f15d741f924","size":21385,"source_format":"errcodes.h","source_role":"primary_definition","tag":"REL9_0_18","url":"https://github.com/postgres/postgres/blob/391aa8aac11fe78f3b2f5743b56e78b0ad6a5d84/src/include/utils/errcodes.h","version":"9.0.18"},{"blob_id":"sha256:2b1d71c453a82488c4e95df84a9ee18dc8fdcb2532a7c56f44f1e8c4265a8132","channel":"formal","code_count":228,"commit":"1f43001424a9da624a89b213d0be606a8212a50a","id":"postgresql:REL9_1_0:src/backend/utils/errcodes.txt","major":"9.1","parsed_path":"raw/definitions/REL9_1_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL9_1_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/1f43001424a9da624a89b213d0be606a8212a50a/src/backend/utils/errcodes.txt","record_count":234,"release":"9.1.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"2b1d71c453a82488c4e95df84a9ee18dc8fdcb2532a7c56f44f1e8c4265a8132","size":29355,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL9_1_0","url":"https://github.com/postgres/postgres/blob/1f43001424a9da624a89b213d0be606a8212a50a/src/backend/utils/errcodes.txt","version":"9.1.0"},{"blob_id":"sha256:271a522fcd18ec45ebe4c1235af0e27a0e9bf0376fda4073b9f4a9c0a00fc711","channel":"formal","code_count":232,"commit":"ef47adb414e46099155c34529a2a5caeea02fc41","id":"postgresql:REL9_2_0:src/backend/utils/errcodes.txt","major":"9.2","parsed_path":"raw/definitions/REL9_2_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL9_2_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/ef47adb414e46099155c34529a2a5caeea02fc41/src/backend/utils/errcodes.txt","record_count":238,"release":"9.2.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"271a522fcd18ec45ebe4c1235af0e27a0e9bf0376fda4073b9f4a9c0a00fc711","size":30387,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL9_2_0","url":"https://github.com/postgres/postgres/blob/ef47adb414e46099155c34529a2a5caeea02fc41/src/backend/utils/errcodes.txt","version":"9.2.0"},{"blob_id":"sha256:f90d801e724191c84e94ae33483e71b4e3c4de5730474d316df4c722a149897d","channel":"formal","code_count":232,"commit":"da645b3a73580ac30cf02e932b42d06157b98229","id":"postgresql:REL9_3_0:src/backend/utils/errcodes.txt","major":"9.3","parsed_path":"raw/definitions/REL9_3_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL9_3_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/da645b3a73580ac30cf02e932b42d06157b98229/src/backend/utils/errcodes.txt","record_count":238,"release":"9.3.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"f90d801e724191c84e94ae33483e71b4e3c4de5730474d316df4c722a149897d","size":30387,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL9_3_0","url":"https://github.com/postgres/postgres/blob/da645b3a73580ac30cf02e932b42d06157b98229/src/backend/utils/errcodes.txt","version":"9.3.0"},{"blob_id":"sha256:1695ec274fb29f0b0875ff674405e775334243835a6f6008e007dfe3a8260bf5","channel":"formal","code_count":232,"commit":"8ca336f4ac3f08a5f23e76c6e9a5f2c8064f5883","id":"postgresql:REL9_4_0:src/backend/utils/errcodes.txt","major":"9.4","parsed_path":"raw/definitions/REL9_4_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL9_4_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/8ca336f4ac3f08a5f23e76c6e9a5f2c8064f5883/src/backend/utils/errcodes.txt","record_count":238,"release":"9.4.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"1695ec274fb29f0b0875ff674405e775334243835a6f6008e007dfe3a8260bf5","size":30387,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL9_4_0","url":"https://github.com/postgres/postgres/blob/8ca336f4ac3f08a5f23e76c6e9a5f2c8064f5883/src/backend/utils/errcodes.txt","version":"9.4.0"},{"blob_id":"sha256:37f728a7e034ef0b05b060a4b82c7dd95c900e4a5501c80bfefd8d679889253b","channel":"formal","code_count":236,"commit":"cdd4ed5449bf317cc71b45a8deee0173822e7592","id":"postgresql:REL9_5_0:src/backend/utils/errcodes.txt","major":"9.5","parsed_path":"raw/definitions/REL9_5_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL9_5_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/cdd4ed5449bf317cc71b45a8deee0173822e7592/src/backend/utils/errcodes.txt","record_count":242,"release":"9.5.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"37f728a7e034ef0b05b060a4b82c7dd95c900e4a5501c80bfefd8d679889253b","size":30798,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL9_5_0","url":"https://github.com/postgres/postgres/blob/cdd4ed5449bf317cc71b45a8deee0173822e7592/src/backend/utils/errcodes.txt","version":"9.5.0"},{"blob_id":"sha256:bf4d94d84c7cfe695cb80e8f009872444574719a80a72e347eb66ef3686b86ef","channel":"formal","code_count":238,"commit":"a721a1ba9cf6c86cb52f1bf325d5a27b64e870d6","id":"postgresql:REL9_6_0:src/backend/utils/errcodes.txt","major":"9.6","parsed_path":"raw/definitions/REL9_6_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL9_6_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/a721a1ba9cf6c86cb52f1bf325d5a27b64e870d6/src/backend/utils/errcodes.txt","record_count":244,"release":"9.6.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"bf4d94d84c7cfe695cb80e8f009872444574719a80a72e347eb66ef3686b86ef","size":31135,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL9_6_0","url":"https://github.com/postgres/postgres/blob/a721a1ba9cf6c86cb52f1bf325d5a27b64e870d6/src/backend/utils/errcodes.txt","version":"9.6.0"},{"blob_id":"sha256:e5d829b24fe63aa69429fa1deb9675051fc8ffd4a8a4651861907a8f12ccb144","channel":"formal","code_count":240,"commit":"5df0e99bea1c3e5fbffa7fbd0982da88ea149bb6","id":"postgresql:REL_10_0:src/backend/utils/errcodes.txt","major":"10","parsed_path":"raw/definitions/REL_10_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_10_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/5df0e99bea1c3e5fbffa7fbd0982da88ea149bb6/src/backend/utils/errcodes.txt","record_count":246,"release":"10.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"e5d829b24fe63aa69429fa1deb9675051fc8ffd4a8a4651861907a8f12ccb144","size":31340,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_10_0","url":"https://github.com/postgres/postgres/blob/5df0e99bea1c3e5fbffa7fbd0982da88ea149bb6/src/backend/utils/errcodes.txt","version":"10.0"},{"blob_id":"sha256:8518be6de92ae135765e295c631c5f525120ca2b132453404b620f9aa595cab4","channel":"formal","code_count":241,"commit":"19f20081df059fef87e14c8e953669bd173dd7f1","id":"postgresql:REL_11_0:src/backend/utils/errcodes.txt","major":"11","parsed_path":"raw/definitions/REL_11_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_11_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/19f20081df059fef87e14c8e953669bd173dd7f1/src/backend/utils/errcodes.txt","record_count":247,"release":"11.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"8518be6de92ae135765e295c631c5f525120ca2b132453404b620f9aa595cab4","size":31453,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_11_0","url":"https://github.com/postgres/postgres/blob/19f20081df059fef87e14c8e953669bd173dd7f1/src/backend/utils/errcodes.txt","version":"11.0"},{"blob_id":"sha256:943259f3e36af1343dd0f090f7c7cec0e8c762b038d68c178aaa9b1b11999bfb","channel":"formal","code_count":257,"commit":"ad1f2885b8c82e0c2d56d7974f012cbecce17a17","id":"postgresql:REL_12_0:src/backend/utils/errcodes.txt","major":"12","parsed_path":"raw/definitions/REL_12_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_12_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/ad1f2885b8c82e0c2d56d7974f012cbecce17a17/src/backend/utils/errcodes.txt","record_count":263,"release":"12.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"943259f3e36af1343dd0f090f7c7cec0e8c762b038d68c178aaa9b1b11999bfb","size":33114,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_12_0","url":"https://github.com/postgres/postgres/blob/ad1f2885b8c82e0c2d56d7974f012cbecce17a17/src/backend/utils/errcodes.txt","version":"12.0"},{"blob_id":"sha256:9a464a3c3c99d2488782d4cdd0d46ce261085a944cb0c21e2d884586fbc8204d","channel":"formal","code_count":258,"commit":"29be9983a64c011eac0b9ee29895cce71e15ea77","id":"postgresql:REL_13_0:src/backend/utils/errcodes.txt","major":"13","parsed_path":"raw/definitions/REL_13_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_13_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/29be9983a64c011eac0b9ee29895cce71e15ea77/src/backend/utils/errcodes.txt","record_count":264,"release":"13.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"9a464a3c3c99d2488782d4cdd0d46ce261085a944cb0c21e2d884586fbc8204d","size":33239,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_13_0","url":"https://github.com/postgres/postgres/blob/29be9983a64c011eac0b9ee29895cce71e15ea77/src/backend/utils/errcodes.txt","version":"13.0"},{"blob_id":"sha256:c3c967fa20577f7ded946cb99e1a4706b85bb2476fd32d7e4a133c971a603552","channel":"formal","code_count":259,"commit":"86a4dc1e6f29d1992a2afa3fac1a0b0a6e84568c","id":"postgresql:REL_14_0:src/backend/utils/errcodes.txt","major":"14","parsed_path":"raw/definitions/REL_14_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_14_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/86a4dc1e6f29d1992a2afa3fac1a0b0a6e84568c/src/backend/utils/errcodes.txt","record_count":265,"release":"14.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"c3c967fa20577f7ded946cb99e1a4706b85bb2476fd32d7e4a133c971a603552","size":33337,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_14_0","url":"https://github.com/postgres/postgres/blob/86a4dc1e6f29d1992a2afa3fac1a0b0a6e84568c/src/backend/utils/errcodes.txt","version":"14.0"},{"blob_id":"sha256:a34b5fccd8a27c92817314dd942b79e76896cd1d9a8d4be21c81b02227850b4a","channel":"formal","code_count":260,"commit":"2a7ce2e2ce474504a707ec03e128fde66cfb8b48","id":"postgresql:REL_15_0:src/backend/utils/errcodes.txt","major":"15","parsed_path":"raw/definitions/REL_15_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_15_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/2a7ce2e2ce474504a707ec03e128fde66cfb8b48/src/backend/utils/errcodes.txt","record_count":266,"release":"15.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"a34b5fccd8a27c92817314dd942b79e76896cd1d9a8d4be21c81b02227850b4a","size":33458,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_15_0","url":"https://github.com/postgres/postgres/blob/2a7ce2e2ce474504a707ec03e128fde66cfb8b48/src/backend/utils/errcodes.txt","version":"15.0"},{"blob_id":"sha256:1d1d741b7b7c6dfd8275287e31c79befed75f3b9349e1a42ef0ca147c429ff88","channel":"formal","code_count":260,"commit":"c372fbbd8e911f2412b80a8c39d7079366565d67","id":"postgresql:REL_16_0:src/backend/utils/errcodes.txt","major":"16","parsed_path":"raw/definitions/REL_16_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_16_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/c372fbbd8e911f2412b80a8c39d7079366565d67/src/backend/utils/errcodes.txt","record_count":266,"release":"16.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"1d1d741b7b7c6dfd8275287e31c79befed75f3b9349e1a42ef0ca147c429ff88","size":33458,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_16_0","url":"https://github.com/postgres/postgres/blob/c372fbbd8e911f2412b80a8c39d7079366565d67/src/backend/utils/errcodes.txt","version":"16.0"},{"blob_id":"sha256:bb53279934510355eb4135a807c90d989f07650bd90f87026a4441f11d3296b1","channel":"formal","code_count":260,"commit":"d7ec59a63d745ba74fba0e280bbf85dc6d1caa3e","id":"postgresql:REL_17_0:src/backend/utils/errcodes.txt","major":"17","parsed_path":"raw/definitions/REL_17_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_17_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/d7ec59a63d745ba74fba0e280bbf85dc6d1caa3e/src/backend/utils/errcodes.txt","record_count":266,"release":"17.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"bb53279934510355eb4135a807c90d989f07650bd90f87026a4441f11d3296b1","size":33392,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_17_0","url":"https://github.com/postgres/postgres/blob/d7ec59a63d745ba74fba0e280bbf85dc6d1caa3e/src/backend/utils/errcodes.txt","version":"17.0"},{"blob_id":"sha256:6e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba","channel":"formal","code_count":262,"commit":"3d6a828938a5fa0444275d3d2f67b64ec3199eb7","id":"postgresql:REL_18_0:src/backend/utils/errcodes.txt","major":"18","parsed_path":"raw/definitions/REL_18_0.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_18_0.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/3d6a828938a5fa0444275d3d2f67b64ec3199eb7/src/backend/utils/errcodes.txt","record_count":268,"release":"18.0","release_date":null,"repository":"https://github.com/postgres/postgres.git","sha256":"6e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba","size":33739,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_18_0","url":"https://github.com/postgres/postgres/blob/3d6a828938a5fa0444275d3d2f67b64ec3199eb7/src/backend/utils/errcodes.txt","version":"18.0"},{"blob_id":"sha256:cadb9e83cde9a8699a7e74448891ca623af8579ccc8e11c7e533fb47cbc42f89","channel":"preview","code_count":262,"commit":"3638289fb57bdabec00deda98ee9624a35f5d66a","id":"postgresql:REL_19_BETA3:src/backend/utils/errcodes.txt","major":"19","parsed_path":"raw/definitions/REL_19_BETA3.parsed.json","path":"src/backend/utils/errcodes.txt","raw_path":"raw/definitions/REL_19_BETA3.txt","raw_url":"https://raw.githubusercontent.com/postgres/postgres/3638289fb57bdabec00deda98ee9624a35f5d66a/src/backend/utils/errcodes.txt","record_count":268,"release":"19beta3","release_date":"2026-08-13","repository":"https://github.com/postgres/postgres.git","sha256":"cadb9e83cde9a8699a7e74448891ca623af8579ccc8e11c7e533fb47cbc42f89","size":33739,"source_format":"errcodes.txt","source_role":"primary_definition","tag":"REL_19_BETA3","url":"https://github.com/postgres/postgres/blob/3638289fb57bdabec00deda98ee9624a35f5d66a/src/backend/utils/errcodes.txt","version":"19beta3"}],"sqlstate":"08P01","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":"protocol_violation","ServerVersion":null,"Status":null,"Payload":{"assertions":["The selected server diagnostic has the expected SQLSTATE","The selected recovery/probe assertions pass","Runner-owned resources are cleaned up"],"case_id":"protocol_violation","cleanup":"Drop the case schema with an owner connection.","has_snippet":true,"position":0,"preconditions":["A runner-owned disposable target is provisioned."],"repair":"Follow the case-specific repair statements and verify the resulting state.","trigger":"Complete a startup handshake, then send a correctly framed unknown frontend message type.","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 every backend or client path.","method":"Read the fixed errcodes.txt definition and the locked catalogue metadata.","position":0,"runtime":[],"sources":["src.errcodes.18.6"],"statement":"08P01 is the protocol_violation condition in Class 08."}},{"Kind":"claims","Ordinal":1,"ID":"mechanism.backend-path","ServerVersion":null,"Status":null,"Payload":{"claim_id":"mechanism.backend-path","limits":"Other calls can retain the same SQLSTATE with different context or text.","method":"Trace the resolved source call records at the fixed release commits and compare their dynamic message fields.","position":1,"runtime":[],"sources":["src.protocol-invalid-frontend.18.6","src.protocol-invalid-frontend.10.23"],"statement":"The fixed source paths associated with 08P01 report the condition in the mechanism selected for this page."}},{"Kind":"claims","Ordinal":2,"ID":"extended-query-error-recovery","ServerVersion":null,"Status":null,"Payload":{"claim_id":"extended-query-error-recovery","limits":"This is a REL_10_23 source contract; no Bind or Sync runtime was selected in this batch, and a driver must send a valid Sync rather than arbitrary bytes.","method":"Read the complete REL_10_23 exec_bind_message branch and the surrounding top-level error-recovery and Sync handling in postgres.c.","position":2,"runtime":[],"sources":["src.postgres-bind.10.23","src.postgres-sync.10.23"],"statement":"The fixed extended-query Bind path reports ERROR 08P01 for parameter-format cardinality mismatches or a parameter count that differs from the prepared statement. After an ERROR while processing an extended-query message, the top-level loop skips messages until a protocol-valid Sync and then resumes the normal ReadyForQuery flow; this ERROR path is distinct from the unknown frontend type FATAL branch."}},{"Kind":"claims","Ordinal":3,"ID":"message-buffer-boundary","ServerVersion":null,"Status":null,"Payload":{"claim_id":"message-buffer-boundary","limits":"The exact branch depends on the parser and message framing; this source scan does not select a natural runtime or generalize every malformed frame.","method":"Read pq_getmsgbyte, pq_getmsgbytes/pq_copymsgbytes, pq_getmsgstring/pq_getmsgrawstring, and pq_getmsgend in the fixed pqformat.c source.","position":3,"runtime":[],"sources":["src.pqformat.10.23"],"statement":"The fixed REL_10_23 pqformat readers report ERROR 08P01 for a depleted message, insufficient bytes, an invalid string, or trailing message data. These parser errors are source-only examples of protocol_violation and do not imply the unknown-message FATAL socket termination."}},{"Kind":"claims","Ordinal":4,"ID":"runtime.representative-case","ServerVersion":null,"Status":null,"Payload":{"claim_id":"runtime.representative-case","limits":"This covers the selected case and versions only; it does not generalize to every driver, proxy, or intermediate release.","method":"Run the shared registry case on isolated runner-owned latest and PG10 targets; inspect the final summaries and raw results.","position":4,"runtime":["runtime.08P01-eof-repair-latest.latest","runtime.08P01-eof-repair-pg10.pg10"],"sources":["snippet-registry.08P01","manifest.08P01"],"statement":"The selected protocol_violation case passed with the expected structured diagnostics, recovery assertions, and cleanup on PostgreSQL 18.6 and 10.21."}},{"Kind":"claims","Ordinal":5,"ID":"protocol-phase-boundary","ServerVersion":null,"Status":null,"Payload":{"claim_id":"protocol-phase-boundary","limits":"The selected runtime covers one unknown frontend byte and does not generalize to every framing, proxy, or startup failure.","method":"Compare the fixed postgres.c dispatch path, the protocol error-field contract, and the selected raw collector sequence.","position":5,"runtime":[],"sources":["src.protocol-invalid-frontend.18.6","doc.protocol.18","runtime.representative-case"],"statement":"The selected unknown-message branch occurs after startup reaches ReadyForQuery, emits a FATAL ErrorResponse, and closes the affected socket; a pre-session protocol failure has no session transaction, and a client EOF without the server ErrorResponse is not sufficient to assign 08P01."}},{"Kind":"claims","Ordinal":6,"ID":"versions.catalogue-boundary","ServerVersion":null,"Status":null,"Payload":{"claim_id":"versions.catalogue-boundary","limits":"Presence in a definition file is not an exact behavioral introduction; the two runtime targets do not prove all middle versions.","method":"Read the generated facts block and locked manifest, then compare the selected target summaries.","position":6,"runtime":[],"sources":["src.errcodes.18.6","src.calls.REL_18_6","src.calls.REL_10_23"],"statement":"The locked catalogue records 08P01 in the listed snapshots; the runtime comparison here is limited to PostgreSQL 18.6 and 10.21."}},{"Kind":"messages","Ordinal":0,"ID":"message.protocol-invalid-frontend","ServerVersion":null,"Status":null,"Payload":{"limits":"","message_id":"message.protocol-invalid-frontend","path":"","position":0,"raw":{"id":"message.protocol-invalid-frontend","primary_template":"invalid frontend message type %d","severity_source":"explicit FATAL","sources":["src.protocol-invalid-frontend.18.6","src.protocol-invalid-frontend.10.23"],"sqlstate":"08P01"},"severity":"explicit FATAL","sources":["src.protocol-invalid-frontend.18.6","src.protocol-invalid-frontend.10.23"],"templates":[{"kind":"primary","literal":"invalid frontend message type","position":0,"role":"","template":"invalid frontend message type %d"}]}},{"Kind":"messages","Ordinal":1,"ID":"message.bind-format-count","ServerVersion":null,"Status":null,"Payload":{"limits":"","message_id":"message.bind-format-count","path":"","position":1,"raw":{"id":"message.bind-format-count","primary_template":"bind message has %d parameter formats but %d parameters","severity_source":"explicit ERROR","sources":["src.postgres-bind.10.23"],"sqlstate":"08P01"},"severity":"explicit ERROR","sources":["src.postgres-bind.10.23"],"templates":[{"kind":"primary","literal":"bind message has parameter formats but parameters","position":0,"role":"","template":"bind message has %d parameter formats but %d parameters"}]}},{"Kind":"messages","Ordinal":2,"ID":"message.bind-parameter-count","ServerVersion":null,"Status":null,"Payload":{"limits":"","message_id":"message.bind-parameter-count","path":"","position":2,"raw":{"id":"message.bind-parameter-count","primary_template":"bind message supplies %d parameters, but prepared statement \"%s\" requires %d","severity_source":"explicit ERROR","sources":["src.postgres-bind.10.23"],"sqlstate":"08P01"},"severity":"explicit ERROR","sources":["src.postgres-bind.10.23"],"templates":[{"kind":"primary","literal":"bind message supplies parameters, but prepared statement \" \" requires","position":0,"role":"","template":"bind message supplies %d parameters, but prepared statement \"%s\" requires %d"}]}},{"Kind":"messages","Ordinal":3,"ID":"message.no-data-left","ServerVersion":null,"Status":null,"Payload":{"limits":"","message_id":"message.no-data-left","path":"","position":3,"raw":{"id":"message.no-data-left","primary_template":"no data left in message","severity_source":"explicit ERROR","sources":["src.pqformat.10.23"],"sqlstate":"08P01"},"severity":"explicit ERROR","sources":["src.pqformat.10.23"],"templates":[{"kind":"primary","literal":"no data left in message","position":0,"role":"","template":"no data left in message"}]}},{"Kind":"messages","Ordinal":4,"ID":"message.insufficient-data-left","ServerVersion":null,"Status":null,"Payload":{"limits":"","message_id":"message.insufficient-data-left","path":"","position":4,"raw":{"id":"message.insufficient-data-left","primary_template":"insufficient data left in message","severity_source":"explicit ERROR","sources":["src.pqformat.10.23"],"sqlstate":"08P01"},"severity":"explicit ERROR","sources":["src.pqformat.10.23"],"templates":[{"kind":"primary","literal":"insufficient data left in message","position":0,"role":"","template":"insufficient data left in message"}]}},{"Kind":"messages","Ordinal":5,"ID":"message.invalid-string","ServerVersion":null,"Status":null,"Payload":{"limits":"","message_id":"message.invalid-string","path":"","position":5,"raw":{"id":"message.invalid-string","primary_template":"invalid string in message","severity_source":"explicit ERROR","sources":["src.pqformat.10.23"],"sqlstate":"08P01"},"severity":"explicit ERROR","sources":["src.pqformat.10.23"],"templates":[{"kind":"primary","literal":"invalid string in message","position":0,"role":"","template":"invalid string in message"}]}},{"Kind":"messages","Ordinal":6,"ID":"message.invalid-format","ServerVersion":null,"Status":null,"Payload":{"limits":"","message_id":"message.invalid-format","path":"","position":6,"raw":{"id":"message.invalid-format","primary_template":"invalid message format","severity_source":"explicit ERROR","sources":["src.pqformat.10.23"],"sqlstate":"08P01"},"severity":"explicit ERROR","sources":["src.pqformat.10.23"],"templates":[{"kind":"primary","literal":"invalid message format","position":0,"role":"","template":"invalid message format"}]}},{"Kind":"runtimes","Ordinal":0,"ID":"runtime.08P01-eof-repair-latest.latest","ServerVersion":"18.6 (Homebrew)","Status":"passed","Payload":{"cases":["protocol_violation"],"limits":"Disposable runner-owned target only; this is a bounded mechanism case, not a guarantee for every client or network path.","position":0,"raw":{"assertions":[{"expected":"08P01","name":"protocol SQLSTATE comes from server ErrorResponse","observed":"08P01","passed":true},{"expected":"FATAL","name":"protocol violation is fatal","observed":"FATAL","passed":true},{"expected":"invalid frontend message diagnostic","name":"invalid message diagnostic","observed":"invalid frontend message type 89","passed":true},{"expected":true,"name":"server closes fatal protocol session","observed":{"eof":true,"error":null},"passed":true},{"expected":"ReadyForQuery (Z)","name":"startup reached ReadyForQuery","observed":["R","S","S","S","S","S","S","S","S","S","S","S","S","S","S","S","K","Z"],"passed":true},{"expected":"SELECT 1 and IDLE","name":"separate connection remains usable","observed":{"probe":1,"status":"IDLE"},"passed":true}],"case_manifest":"verify/cases/08P01/cases.json","case_manifest_sha256":"ff8ea1b7c0555be091611aff9149037af8d78ab3abefb82a3954e42b646da437","cases":["protocol_violation"],"cleanup":{"case":{"errors":[],"passed":true},"target_stop":{"argv":["/opt/homebrew/Cellar/postgresql@18/18.6/bin/pg_ctl","-D","/Users/vonng/pgcenter/err-code/.cache/runtime/08P01-eof-repair-latest/latest/data","-m","fast","-w","stop"],"elapsed_seconds":0.109,"returncode":0,"stderr":"","stdout":"waiting for server to shut down.... done\nserver stopped\n"}},"environment":{"lc_messages":"C","libpq_version":"18.6","locale":"en_US.UTF-8","log_destination":"csvlog,jsonlog","machine":"arm64","platform":"macOS-26.6.2-arm64-arm-64bit-Mach-O","psycopg_version":"3.3.5","python_version":"3.14.6 (main, Jun 10 2026, 10:03:53) [Clang 21.0.0 (clang-2100.0.123.102)]","server_version":"18.6 (Homebrew)","server_version_num":"180006","target_kind":"latest"},"id":"runtime.08P01-eof-repair-latest.latest","kind":"runtime_observation","limits":"Disposable runner-owned target only; this is a bounded mechanism case, not a guarantee for every client or network path.","observed":{"collector":{"primary":"invalid frontend message type 89","severity":"FATAL","sqlstate":"08P01"},"connection_scope":"runner-owned TCP endpoint","eof_probe_error":null,"invalid_frontend_message_type":"Y","probe":1,"probe_status":"IDLE","server_eof_after_fatal":true,"server_error":{"C":"08P01","F":"postgres.c","L":"456","M":"invalid frontend message type 89","R":"SocketBackend","S":"FATAL","V":"FATAL"},"startup_messages":["R","S","S","S","S","S","S","S","S","S","S","S","S","S","S","S","K","Z"]},"raw":"verify/results/08P01-eof-repair-latest/latest/raw.jsonl","raw_sha256":"6364ec948d1e14121ac160f82f7097d5412eae6f39f434f3a9a87c0f83f37125","run_id":"08P01-eof-repair-latest","server_version":"18.6 (Homebrew)","server_version_num":180006,"snippet_registry":{"path":"verify/cases/08P01/snippets.json","sha256":"8fad2a3b728b304d1a81f48779c44eae892da89542ba9fb1a5cb93669bf3e90f"},"status":"passed","summary":"verify/results/08P01-eof-repair-latest/latest/summary.json","summary_sha256":"092ffb28a00d072464781f159a4046646f4de9fa377c7733d4f0b6d6d36e6f27","target":"latest"},"run_id":"08P01-eof-repair-latest","runtime_id":"runtime.08P01-eof-repair-latest.latest","server_version":"18.6 (Homebrew)","status":"passed","target":"latest"}},{"Kind":"runtimes","Ordinal":1,"ID":"runtime.08P01-eof-repair-pg10.pg10","ServerVersion":"10.21 (Debian 10.21-1.pgdg90+1)","Status":"passed","Payload":{"cases":["protocol_violation"],"limits":"Disposable runner-owned target only; this is a bounded mechanism case, not a guarantee for every client or network path.","position":1,"raw":{"assertions":[{"expected":"08P01","name":"protocol SQLSTATE comes from server ErrorResponse","observed":"08P01","passed":true},{"expected":"FATAL","name":"protocol violation is fatal","observed":"FATAL","passed":true},{"expected":"invalid frontend message diagnostic","name":"invalid message diagnostic","observed":"invalid frontend message type 89","passed":true},{"expected":true,"name":"server closes fatal protocol session","observed":{"eof":true,"error":null},"passed":true},{"expected":"ReadyForQuery (Z)","name":"startup reached ReadyForQuery","observed":["R","S","S","S","S","S","S","S","S","S","S","S","K","Z"],"passed":true},{"expected":"SELECT 1 and IDLE","name":"separate connection remains usable","observed":{"probe":1,"status":"IDLE"},"passed":true}],"case_manifest":"verify/cases/08P01/cases.json","case_manifest_sha256":"ff8ea1b7c0555be091611aff9149037af8d78ab3abefb82a3954e42b646da437","cases":["protocol_violation"],"cleanup":{"case":{"errors":[],"passed":true},"target_stop":{"cleanup":{"argv":["/usr/local/bin/docker","rm","-f","-v","sqlstate08p01_08P01eofrepairpg10_pg10"],"elapsed_seconds":0.317,"returncode":0,"stderr":"","stdout":"sqlstate08p01_08P01eofrepairpg10_pg10\n"},"inspect":{"argv":["/usr/local/bin/docker","inspect","sqlstate08p01_08P01eofrepairpg10_pg10"],"elapsed_seconds":0.02,"returncode":0,"stderr":"","stdout":"[\n    {\n        \"Id\": \"26fd4f6f5fa521c9e057e2aaaf9f5c8aaf1940a30ae41fc1f312e8e691d3f185\",\n        \"Created\": \"2026-09-09T15:32:56.548369298Z\",\n        \"Path\": \"docker-entrypoint.sh\",\n        \"Args\": [\n            \"postgres\",\n            \"-c\",\n            \"listen_addresses=*\",\n            \"-c\",\n            \"log_destination=csvlog\",\n            \"-c\",\n            \"logging_collector=on\",\n            \"-c\",\n            \"log_directory=log\",\n            \"-c\",\n            \"log_filename=postgresql-%Y%m%d%H%M%S.log\",\n            \"-c\",\n            \"log_min_messages=error\",\n            \"-c\",\n            \"log_min_error_statement=error\",\n            \"-c\",\n            \"log_error_verbosity=verbose\",\n            \"-c\",\n            \"wal_level=logical\",\n            \"-c\",\n            \"max_wal_senders=10\",\n            \"-c\",\n            \"max_replication_slots=10\"\n        ],\n        \"State\": {\n            \"Status\": \"running\",\n            \"Running\": true,\n            \"Paused\": false,\n            \"Restarting\": false,\n            \"OOMKilled\": false,\n            \"Dead\": false,\n            \"Pid\": 56640,\n            \"ExitCode\": 0,\n            \"Error\": \"\",\n            \"StartedAt\": \"2026-09-09T15:32:56.660443964Z\",\n            \"FinishedAt\": \"0001-01-01T00:00:00Z\"\n        },\n        \"Image\": \"sha256:b2baf8998630663d21370da06387c950e587071bdd307ee34e661cdcc7442bcc\",\n        \"ResolvConfPath\": \"/var/lib/docker/containers/26fd4f6f5fa521c9e057e2aaaf9f5c8aaf1940a30ae41fc1f312e8e691d3f185/resolv.conf\",\n        \"HostnamePath\": \"/var/lib/docker/containers/26fd4f6f5fa521c9e057e2aaaf9f5c8aaf1940a30ae41fc1f312e8e691d3f185/hostname\",\n        \"HostsPath\": \"/var/lib/docker/containers/26fd4f6f5fa521c9e057e2aaaf9f5c8aaf1940a30ae41fc1f312e8e691d3f185/hosts\",\n        \"LogPath\": \"/var/lib/docker/containers/26fd4f6f5fa521c9e057e2aaaf9f5c8aaf1940a30ae41fc1f312e8e691d3f185/26fd4f6f5fa521c9e057e2aaaf9f5c8aaf1940a30ae41fc1f312e8e691d3f185-json.log\",\n        \"Name\": \"/sqlstate08p01_08P01eofrepairpg10_pg10\",\n        \"RestartCount\": 0,\n        \"Driver\": \"overlayfs\",\n        \"Platform\": \"linux\",\n        \"MountLabel\": \"\",\n        \"ProcessLabel\": \"\",\n        \"AppArmorProfile\": \"\",\n        \"ExecIDs\": null,\n        \"HostConfig\": {\n            \"Binds\": null,\n            \"ContainerIDFile\": \"\",\n            \"LogConfig\": {\n                \"Type\": \"json-file\",\n                \"Config\": {}\n            },\n            \"NetworkMode\": \"bridge\",\n            \"PortBindings\": {\n                \"5432/tcp\": [\n                    {\n                        \"HostIp\": \"127.0.0.1\",\n                        \"HostPort\": \"\"\n                    }\n                ]\n            },\n            \"RestartPolicy\": {\n                \"Name\": \"no\",\n                \"MaximumRetryCount\": 0\n            },\n            \"AutoRemove\": false,\n            \"VolumeDriver\": \"\",\n            \"VolumesFrom\": null,\n            \"ConsoleSize\": [\n                0,\n                0\n            ],\n            \"CapAdd\": null,\n            \"CapDrop\": null,\n            \"CgroupnsMode\": \"private\",\n            \"Dns\": null,\n            \"DnsOptions\": [],\n            \"DnsSearch\": [],\n            \"ExtraHosts\": null,\n            \"GroupAdd\": null,\n            \"IpcMode\": \"private\",\n            \"Cgroup\": \"\",\n            \"Links\": null,\n            \"OomScoreAdj\": 0,\n            \"PidMode\": \"\",\n            \"Privileged\": false,\n            \"PublishAllPorts\": false,\n            \"ReadonlyRootfs\": false,\n            \"SecurityOpt\": null,\n            \"UTSMode\": \"\",\n            \"UsernsMode\": \"\",\n            \"ShmSize\": 67108864,\n            \"Runtime\": \"runc\",\n            \"Isolation\": \"\",\n            \"CpuShares\": 0,\n            \"Memory\": 0,\n            \"NanoCpus\": 0,\n            \"CgroupParent\": \"\",\n            \"BlkioWeight\": 0,\n            \"BlkioWeightDevice\": [],\n            \"BlkioDeviceReadBps\": [],\n            \"BlkioDeviceWriteBps\": [],\n            \"BlkioDeviceReadIOps\": [],\n            \"BlkioDeviceWriteIOps\": [],\n            \"CpuPeriod\": 0,\n            \"CpuQuota\": 0,\n            \"CpuRealtimePeriod\": 0,\n            \"CpuRealtimeRuntime\": 0,\n            \"CpusetCpus\": \"\",\n            \"CpusetMems\": \"\",\n            \"Devices\": [],\n            \"DeviceCgroupRules\": null,\n            \"DeviceRequests\": null,\n            \"MemoryReservation\": 0,\n            \"MemorySwap\": 0,\n            \"MemorySwappiness\": null,\n            \"OomKillDisable\": null,\n            \"PidsLimit\": null,\n            \"Ulimits\": [],\n            \"CpuCount\": 0,\n            \"CpuPercent\": 0,\n            \"IOMaximumIOps\": 0,\n            \"IOMaximumBandwidth\": 0,\n            \"MaskedPaths\": [\n                \"/proc/acpi\",\n                \"/proc/asound\",\n                \"/proc/interrupts\",\n                \"/proc/kcore\",\n                \"/proc/keys\",\n                \"/proc/latency_stats\",\n                \"/proc/sched_debug\",\n                \"/proc/scsi\",\n                \"/proc/timer_list\",\n                \"/proc/timer_stats\",\n                \"/sys/devices/virtual/powercap\",\n                \"/sys/firmware\"\n            ],\n            \"ReadonlyPaths\": [\n                \"/proc/bus\",\n                \"/proc/fs\",\n                \"/proc/irq\",\n                \"/proc/sys\",\n                \"/proc/sysrq-trigger\"\n            ]\n        },\n        \"Storage\": {\n            \"RootFS\": {\n                \"Snapshot\": {\n                    \"Name\": \"overlayfs\"\n                }\n            }\n        },\n        \"Mounts\": [\n            {\n                \"Type\": \"volume\",\n                \"Name\": \"7a91f8bb39ab938c0c655ad9fe3959dd66f9ee7aa58d7da0358feeb34418609a\",\n                \"Source\": \"/var/lib/docker/volumes/7a91f8bb39ab938c0c655ad9fe3959dd66f9ee7aa58d7da0358feeb34418609a/_data\",\n                \"Destination\": \"/var/lib/postgresql/data\",\n                \"Driver\": \"local\",\n                \"Mode\": \"\",\n                \"RW\": true,\n                \"Propagation\": \"\"\n            }\n        ],\n        \"Config\": {\n            \"Hostname\": \"26fd4f6f5fa5\",\n            \"Domainname\": \"\",\n            \"User\": \"\",\n            \"AttachStdin\": false,\n            \"AttachStdout\": false,\n            \"AttachStderr\": false,\n            \"ExposedPorts\": {\n                \"5432/tcp\": {}\n            },\n            \"Tty\": false,\n            \"OpenStdin\": false,\n            \"StdinOnce\": false,\n            \"Env\": [\n                \"POSTGRES_HOST_AUTH_METHOD=trust\",\n                \"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/postgresql/10/bin\",\n                \"GOSU_VERSION=1.14\",\n                \"LANG=en_US.utf8\",\n                \"PG_MAJOR=10\",\n                \"PG_VERSION=10.21-1.pgdg90+1\",\n                \"PGDATA=/var/lib/postgresql/data\"\n            ],\n            \"Cmd\": [\n                \"postgres\",\n                \"-c\",\n                \"listen_addresses=*\",\n                \"-c\",\n                \"log_destination=csvlog\",\n                \"-c\",\n                \"logging_collector=on\",\n                \"-c\",\n                \"log_directory=log\",\n                \"-c\",\n                \"log_filename=postgresql-%Y%m%d%H%M%S.log\",\n                \"-c\",\n                \"log_min_messages=error\",\n                \"-c\",\n                \"log_min_error_statement=error\",\n                \"-c\",\n                \"log_error_verbosity=verbose\",\n                \"-c\",\n                \"wal_level=logical\",\n                \"-c\",\n                \"max_wal_senders=10\",\n                \"-c\",\n                \"max_replication_slots=10\"\n            ],\n            \"Image\": \"postgres@sha256:b2baf8998630663d21370da06387c950e587071bdd307ee34e661cdcc7442bcc\",\n            \"Volumes\": {\n                \"/var/lib/postgresql/data\": {}\n            },\n            \"WorkingDir\": \"\",\n            \"Entrypoint\": [\n                \"docker-entrypoint.sh\"\n            ],\n            \"Labels\": {},\n            \"StopSignal\": \"SIGINT\",\n            \"StopTimeout\": 1\n        },\n        \"NetworkSettings\": {\n            \"SandboxID\": \"15aef53e12f50f8cb7311b8968993281a1c00e34b197e7860bb21db3082f251e\",\n            \"SandboxKey\": \"/var/run/docker/netns/15aef53e12f5\",\n            \"Ports\": {\n                \"5432/tcp\": [\n                    {\n                        \"HostIp\": \"127.0.0.1\",\n                        \"HostPort\": \"62073\"\n                    }\n                ]\n            },\n            \"Networks\": {\n                \"bridge\": {\n                    \"IPAMConfig\": null,\n                    \"Links\": null,\n                    \"Aliases\": null,\n                    \"DriverOpts\": null,\n                    \"GwPriority\": 0,\n                    \"NetworkID\": \"aed51554f8cd8bac69ecd4f073e41e147fda7b458e9d95be2af472651f2e825c\",\n                    \"EndpointID\": \"73dc3d9a216090ba58ff15d32e0e17496d91344244d84273330fa49e58768e58\",\n                    \"Gateway\": \"172.17.0.1\",\n                    \"IPAddress\": \"172.17.0.53\",\n                    \"MacAddress\": \"9e:2f:95:27:05:56\",\n                    \"IPPrefixLen\": 16,\n                    \"IPv6Gateway\": \"\",\n                    \"GlobalIPv6Address\": \"\",\n                    \"GlobalIPv6PrefixLen\": 0,\n                    \"DNSNames\": null\n                }\n            }\n        },\n        \"ImageManifestDescriptor\": {\n            \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n            \"digest\": \"sha256:52aada7978f1eef3b6b52a51afb7a3defd69254d00c946cb90d2ceb32b8ffce7\",\n            \"size\": 3246,\n            \"platform\": {\n                \"architecture\": \"arm64\",\n                \"os\": \"linux\",\n                \"variant\": \"v8\"\n            }\n        }\n    }\n]\n"}}},"environment":{"lc_messages":"en_US.utf8","libpq_version":"18.6","locale":"en_US.UTF-8","log_destination":"csvlog","machine":"arm64","platform":"macOS-26.6.2-arm64-arm-64bit-Mach-O","psycopg_version":"3.3.5","python_version":"3.14.6 (main, Jun 10 2026, 10:03:53) [Clang 21.0.0 (clang-2100.0.123.102)]","server_version":"10.21 (Debian 10.21-1.pgdg90+1)","server_version_num":"100021","target_kind":"pg10"},"id":"runtime.08P01-eof-repair-pg10.pg10","image":"postgres:10","kind":"runtime_observation","limits":"Disposable runner-owned target only; this is a bounded mechanism case, not a guarantee for every client or network path.","observed":{"collector":{"primary":"invalid frontend message type 89","severity":"FATAL","sqlstate":"08P01"},"connection_scope":"runner-owned TCP endpoint","eof_probe_error":null,"invalid_frontend_message_type":"Y","probe":1,"probe_status":"IDLE","server_eof_after_fatal":true,"server_error":{"C":"08P01","F":"postgres.c","L":"467","M":"invalid frontend message type 89","R":"SocketBackend","S":"FATAL","V":"FATAL"},"startup_messages":["R","S","S","S","S","S","S","S","S","S","S","S","K","Z"]},"raw":"verify/results/08P01-eof-repair-pg10/pg10/raw.jsonl","raw_sha256":"52ac4143e18bbc2fc2d8af0dbcb4d14ad54e8519fbdaa351e50b99aeb50f563d","run_id":"08P01-eof-repair-pg10","server_version":"10.21 (Debian 10.21-1.pgdg90+1)","server_version_num":100021,"snippet_registry":{"path":"verify/cases/08P01/snippets.json","sha256":"8fad2a3b728b304d1a81f48779c44eae892da89542ba9fb1a5cb93669bf3e90f"},"status":"passed","summary":"verify/results/08P01-eof-repair-pg10/pg10/summary.json","summary_sha256":"91736dfcfbf3d47205388295113f747c2e0693e844f90bcf9937e5adc530266c","target":"pg10"},"run_id":"08P01-eof-repair-pg10","runtime_id":"runtime.08P01-eof-repair-pg10.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":"upstream_source","location":"","path":"src/backend/utils/errcodes.txt","position":0,"sha256":"6e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba","source_id":"src.errcodes.18.6","tag":"REL_18_6","url":"https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt"}},{"Kind":"sources","Ordinal":1,"ID":"src.calls.REL_18_6","ServerVersion":null,"Status":null,"Payload":{"commit":"","docs_url":"","kind":"local_artifact","location":"","path":"raw/calls/REL_18_6.jsonl","position":1,"sha256":"9ee8a0e81d8f0825c5c1ae45583439859a26e602bdd4ce2f2a62aa278867ccbf","source_id":"src.calls.REL_18_6","tag":"REL_18_6","url":""}},{"Kind":"sources","Ordinal":2,"ID":"src.calls.REL_10_23","ServerVersion":null,"Status":null,"Payload":{"commit":"","docs_url":"","kind":"local_artifact","location":"","path":"raw/calls/REL_10_23.jsonl","position":2,"sha256":"00d16d3eb01b71ccf1b245c8f3102f9d0ec9f36fb02777b8dd1b99fcb263040c","source_id":"src.calls.REL_10_23","tag":"REL_10_23","url":""}},{"Kind":"sources","Ordinal":3,"ID":"src.protocol-invalid-frontend.18.6","ServerVersion":null,"Status":null,"Payload":{"commit":"724edf9bde9d356724ad384a2e196edc3c9f80f7","docs_url":"","kind":"upstream_source","location":"","path":"src/backend/tcop/postgres.c","position":3,"sha256":"9fb62275b1badf94d01ab351337b60410cd9b3ab1fe63fa9f23d6d2185a21061","source_id":"src.protocol-invalid-frontend.18.6","tag":"REL_18_6","url":"https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/tcop/postgres.c#L454-L456"}},{"Kind":"sources","Ordinal":4,"ID":"src.protocol-invalid-frontend.10.23","ServerVersion":null,"Status":null,"Payload":{"commit":"02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4","docs_url":"","kind":"upstream_source","location":"","path":"src/backend/tcop/postgres.c","position":4,"sha256":"badfe30749794afa80a799dcdbd142fd4e4732ac1c913002d365549ae5313497","source_id":"src.protocol-invalid-frontend.10.23","tag":"REL_10_23","url":"https://github.com/postgres/postgres/blob/02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4/src/backend/tcop/postgres.c#L430-L432"}},{"Kind":"sources","Ordinal":5,"ID":"src.postgres-bind.10.23","ServerVersion":null,"Status":null,"Payload":{"commit":"02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4","docs_url":"","kind":"upstream_source","location":"","path":"src/backend/tcop/postgres.c","position":5,"sha256":"badfe30749794afa80a799dcdbd142fd4e4732ac1c913002d365549ae5313497","source_id":"src.postgres-bind.10.23","tag":"REL_10_23","url":"https://github.com/postgres/postgres/blob/02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4/src/backend/tcop/postgres.c#L1483-L1580"}},{"Kind":"sources","Ordinal":6,"ID":"src.pqformat.10.23","ServerVersion":null,"Status":null,"Payload":{"commit":"02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4","docs_url":"","kind":"upstream_source","location":"","path":"src/backend/libpq/pqformat.c","position":6,"sha256":"637923dbf2b9d9a0610350784f3b1d7d36a545cd8a6bd2cbe6272d9549873a91","source_id":"src.pqformat.10.23","tag":"REL_10_23","url":"https://github.com/postgres/postgres/blob/02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4/src/backend/libpq/pqformat.c#L432-L682"}},{"Kind":"sources","Ordinal":7,"ID":"src.postgres-sync.10.23","ServerVersion":null,"Status":null,"Payload":{"commit":"02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4","docs_url":"","kind":"upstream_source","location":"","path":"src/backend/tcop/postgres.c","position":7,"sha256":"badfe30749794afa80a799dcdbd142fd4e4732ac1c913002d365549ae5313497","source_id":"src.postgres-sync.10.23","tag":"REL_10_23","url":"https://github.com/postgres/postgres/blob/02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4/src/backend/tcop/postgres.c#L3863-L3980"}},{"Kind":"sources","Ordinal":8,"ID":"doc.protocol.18","ServerVersion":null,"Status":null,"Payload":{"commit":"724edf9bde9d356724ad384a2e196edc3c9f80f7","docs_url":"","kind":"upstream_source","location":"","path":"doc/src/sgml/protocol.sgml","position":8,"sha256":"745339e07ebbc2bb67d98b258e25772ada644ef26011e3cd6b3fcbb435235f89","source_id":"doc.protocol.18","tag":"PG18-docs","url":"https://www.postgresql.org/docs/18/protocol-error-fields.html"}},{"Kind":"sources","Ordinal":9,"ID":"manifest.08P01","ServerVersion":null,"Status":null,"Payload":{"commit":"","docs_url":"","kind":"local_artifact","location":"","path":"verify/cases/08P01/cases.json","position":9,"sha256":"ff8ea1b7c0555be091611aff9149037af8d78ab3abefb82a3954e42b646da437","source_id":"manifest.08P01","tag":"workspace","url":"verify/cases/08P01/cases.json"}},{"Kind":"sources","Ordinal":10,"ID":"snippet-registry.08P01","ServerVersion":null,"Status":null,"Payload":{"commit":"","docs_url":"","kind":"local_artifact","location":"","path":"verify/cases/08P01/snippets.json","position":10,"sha256":"8fad2a3b728b304d1a81f48779c44eae892da89542ba9fb1a5cb93669bf3e90f","source_id":"snippet-registry.08P01","tag":"workspace","url":"verify/cases/08P01/snippets.json"}}]}
