{"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":"en","Title":"08P01 — protocol_violation","Summary":"SQLSTATE 08P01 is protocol_violation in Class 08. 08P01 means that a frontend/backend protocol message violated the wire contract. The selected raw TCP case completes startup and observes ReadyForQuery (Z), sends an unknown frontend byte Y in a valid frame, receives C=08P01, S=FATAL, primary invalid frontend message type 89, and reads server EOF before the client closes the socket.","BodyHTML":"\u003ch1\u003e08P01\u003c/h1\u003e\n\u003ch2\u003eAt a glance {#at-a-glance}\u003c/h2\u003e\n\u003cp\u003eSQLSTATE \u003ccode\u003e08P01\u003c/code\u003e is \u003cstrong\u003eprotocol_violation\u003c/strong\u003e in Class \u003ccode\u003e08\u003c/code\u003e. \u003ccode\u003e08P01\u003c/code\u003e means that a frontend/backend protocol message violated the wire contract. The selected raw TCP case completes startup and observes ReadyForQuery (\u003ccode\u003eZ\u003c/code\u003e), sends an unknown frontend byte \u003ccode\u003eY\u003c/code\u003e in a valid frame, receives C=\u003ccode\u003e08P01\u003c/code\u003e, S=\u003ccode\u003eFATAL\u003c/code\u003e, primary \u003ccode\u003einvalid frontend message type 89\u003c/code\u003e, and reads server EOF before the client closes the socket.\u003c/p\u003e\n\u003ch2\u003eMeaning {#meaning}\u003c/h2\u003e\n\u003cp\u003eThe server protocol parser accepts the startup exchange, then rejects an unknown frontend message type before it can dispatch SQL. In the selected path this is a FATAL \u003ccode\u003einvalid frontend message type 89\u003c/code\u003e, followed by server EOF; the code is therefore a synchronization boundary for the affected socket, not a SQL parser error.\u003c/p\u003e\n\u003cp\u003eThe important boundary is the wire state, not the SQL text. A client can reach \u003ccode\u003eReadyForQuery\u003c/code\u003e and still fail on its next message type, as the selected case does; a malformed startup frame or a proxy that changes message framing can fail even earlier and may leave no usable session. The selected runtime exercises the unknown-message dispatch branch; the fixed source evidence below also covers distinct Bind and message-buffer parser branches, while other transport failures must be identified from their own ErrorResponse or log evidence.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e08P01\u003c/code\u003e does not imply one severity or one socket outcome. In the fixed extended-query path, a Bind message with a mismatched parameter-format count or parameter count reports \u003ccode\u003eERROR\u003c/code\u003e; the top-level loop aborts the current command and waits for a protocol-valid \u003ccode\u003eSync\u003c/code\u003e before sending the next \u003ccode\u003eReadyForQuery\u003c/code\u003e. The fixed message-buffer readers likewise use \u003ccode\u003eERROR\u003c/code\u003e for missing bytes, invalid strings, and trailing data. Those recoverable protocol errors are distinct from an unknown message type, which is a \u003ccode\u003eFATAL\u003c/code\u003e boundary because the server can no longer trust message synchronization.\u003c/p\u003e\n\u003ch2\u003eDiagnosis {#diagnosis}\u003c/h2\u003e\n\u003cp\u003eInspect driver/proxy protocol version, message type, frame length, startup mode, and connection ownership. The \u003ccode\u003ecollector\u003c/code\u003e recorded in the selected evidence is a raw protocol ErrorResponse collector (C/S/M plus server EOF), not csvlog/jsonlog. The FATAL socket is closed by the server and is never reused; a separate runner-owned connection returns \u003ccode\u003eSELECT 1\u003c/code\u003e and \u003ccode\u003eIDLE\u003c/code\u003e. This is a wire-protocol boundary, not SQL syntax or a client-created SQLSTATE.\u003c/p\u003e\n\u003cp\u003eUse the phase to interpret recovery:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBefore startup completes, there is no session-level transaction and the driver may only have a connection exception. Preserve the raw server response if one was sent.\u003c/li\u003e\n\u003cli\u003eAfter startup reaches \u003ccode\u003eZ\u003c/code\u003e, an unknown frontend message is rejected by the established backend, but the selected branch is \u003ccode\u003eFATAL\u003c/code\u003e; the server then closes that socket. There is no \u003ccode\u003eROLLBACK\u003c/code\u003e to send on it, even if the client had begun work before the protocol desynchronization.\u003c/li\u003e\n\u003cli\u003eOn a pool or proxy path, compare the bytes sent by the owner with the protocol version and framing expected by the server. A fresh \u003ccode\u003eSELECT 1\u003c/code\u003e on another connection proves reachability only; it does not prove that an in-flight request committed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eUse the primary text to identify the branch before choosing a recovery action. \u003ccode\u003ebind message has ... parameter formats\u003c/code\u003e and \u003ccode\u003ebind message supplies ... parameters\u003c/code\u003e point to extended-query cardinality; \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, and \u003ccode\u003einvalid message format\u003c/code\u003e point to a malformed message body or boundary. These source-defined \u003ccode\u003eERROR\u003c/code\u003e variants may be followed by \u003ccode\u003eSync\u003c/code\u003e recovery when the driver preserves framing. \u003ccode\u003einvalid frontend message type ...\u003c/code\u003e with \u003ccode\u003eFATAL\u003c/code\u003e means the selected socket is already lost.\u003c/p\u003e\n\u003ch2\u003eResponse {#response}\u003c/h2\u003e\n\u003cp\u003eFor a \u003ccode\u003eFATAL\u003c/code\u003e response or server EOF, close and discard the affected socket, correct the protocol or proxy framing, and reconnect. For an extended-query \u003ccode\u003eERROR\u003c/code\u003e, let the driver send protocol-valid \u003ccode\u003eSync\u003c/code\u003e and wait for \u003ccode\u003eReadyForQuery\u003c/code\u003e, then inspect the transaction status; \u003ccode\u003eSync\u003c/code\u003e does not roll back a failed explicit transaction, so status \u003ccode\u003eE\u003c/code\u003e still requires \u003ccode\u003eROLLBACK\u003c/code\u003e or an intentional savepoint recovery. If a non-idempotent request was in flight, reconcile its result before replaying it; the independent probe proves only that a fresh connection works.\u003c/p\u003e\n\u003cp\u003eTreat the selected case as a session-termination branch: after server EOF, establish a fresh connection and repeat only a reconciled, idempotent operation. If the violation happened before a session existed, fix the startup/proxy configuration first. A client-side parser exception or a socket close without the server\u0026#39;s \u003ccode\u003eC\u003c/code\u003e field is insufficient to label the event \u003ccode\u003e08P01\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eDo not improvise a byte sequence or treat the transaction as successfully committed. If the driver cannot preserve the message boundary or does not implement the Sync contract, discard the connection and reconcile the request. This source-only flow does not change the selected unknown-byte runtime, whose \u003ccode\u003eFATAL\u003c/code\u003e socket must be discarded.\u003c/p\u003e\n\u003ch2\u003eMessages {#messages}\u003c/h2\u003e\n\u003cp\u003eThe fixed parser branch emits \u003ccode\u003eFATAL\u003c/code\u003e with primary \u003ccode\u003einvalid frontend message type %d\u003c/code\u003e; the numeric byte is dynamic. The selected byte \u003ccode\u003eY\u003c/code\u003e is reported as \u003ccode\u003e89\u003c/code\u003e. The raw ErrorResponse, not a client exception, is the SQLSTATE authority.\u003c/p\u003e\n\u003cp\u003eOther fixed source branches emit \u003ccode\u003eERROR\u003c/code\u003e with these primary templates:\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\u003eThese Bind and message-buffer variants are source-only in this page; they are not additional runtime observations and do not all terminate the socket.\u003c/p\u003e\n\u003cp\u003eThe selected wire sequence is: startup exchange → \u003ccode\u003eZ\u003c/code\u003e ReadyForQuery → valid frame with type byte \u003ccode\u003eY\u003c/code\u003e (decimal \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 → server EOF. The collector captures those protocol fields and EOF directly; it is neither a csvlog/jsonlog record nor the later independent probe.\u003c/p\u003e\n\u003ch2\u003eRepresentative case {#case}\u003c/h2\u003e\n\u003cp\u003eThe SQL probe is the independent connection check. The actual trigger is a runner-owned TCP handshake followed by an unknown frontend message byte; it cannot be represented by SQL alone.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eSELECT 1;\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe selected 18.6 server record is C=\u003ccode\u003e08P01\u003c/code\u003e, S=\u003ccode\u003eFATAL\u003c/code\u003e, primary \u003ccode\u003einvalid frontend message type 89\u003c/code\u003e; startup reached \u003ccode\u003eZ\u003c/code\u003e, the server EOF assertion was \u003ccode\u003eTrue\u003c/code\u003e, and the separate probe returned \u003ccode\u003e1\u003c/code\u003e and \u003ccode\u003eIDLE\u003c/code\u003e. The raw trigger connection is therefore closed and never reused.\u003c/p\u003e\n\u003cp\u003eThe downloadable case and evidence projections are \u003ca href=\"#cases\" rel=\"nofollow\"\u003e\u003ccode\u003e08P01 case JSON\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"#sources\" rel=\"nofollow\"\u003e\u003ccode\u003eauthored evidence\u003c/code\u003e\u003c/a\u003e. The runner manifest is \u003ccode\u003everify/cases/08P01/cases.json\u003c/code\u003e; the page SQL is checked against its shared registry before publication.\u003c/p\u003e\n\u003ch2\u003eVersions {#versions}\u003c/h2\u003e\n\u003cp\u003eThe generated facts table records the locked catalogue snapshots and earliest observed definition. The selected natural runtime scope is PostgreSQL 18.6 and 10.21; this does not infer behavior for every intermediate release.\u003c/p\u003e\n\u003ch2\u003eRelated {#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\u003eSources {#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":"8e02f7812c152089c1a1e05346f4ebce9e7375253161e8752a8dfdcd33c8da54","Payload":{"body_md":"# 08P01\n\n## At a glance {#at-a-glance}\n\nSQLSTATE `08P01` is **protocol_violation** in Class `08`. `08P01` means that a frontend/backend protocol message violated the wire contract. The selected raw TCP case completes startup and observes ReadyForQuery (`Z`), sends an unknown frontend byte `Y` in a valid frame, receives C=`08P01`, S=`FATAL`, primary `invalid frontend message type 89`, and reads server EOF before the client closes the socket.\n\n\n## Meaning {#meaning}\n\nThe server protocol parser accepts the startup exchange, then rejects an unknown frontend message type before it can dispatch SQL. In the selected path this is a FATAL `invalid frontend message type 89`, followed by server EOF; the code is therefore a synchronization boundary for the affected socket, not a SQL parser error.\n\nThe important boundary is the wire state, not the SQL text. A client can reach `ReadyForQuery` and still fail on its next message type, as the selected case does; a malformed startup frame or a proxy that changes message framing can fail even earlier and may leave no usable session. The selected runtime exercises the unknown-message dispatch branch; the fixed source evidence below also covers distinct Bind and message-buffer parser branches, while other transport failures must be identified from their own ErrorResponse or log evidence.\n\n`08P01` does not imply one severity or one socket outcome. In the fixed extended-query path, a Bind message with a mismatched parameter-format count or parameter count reports `ERROR`; the top-level loop aborts the current command and waits for a protocol-valid `Sync` before sending the next `ReadyForQuery`. The fixed message-buffer readers likewise use `ERROR` for missing bytes, invalid strings, and trailing data. Those recoverable protocol errors are distinct from an unknown message type, which is a `FATAL` boundary because the server can no longer trust message synchronization.\n\n## Diagnosis {#diagnosis}\n\nInspect driver/proxy protocol version, message type, frame length, startup mode, and connection ownership. The `collector` recorded in the selected evidence is a raw protocol ErrorResponse collector (C/S/M plus server EOF), not csvlog/jsonlog. The FATAL socket is closed by the server and is never reused; a separate runner-owned connection returns `SELECT 1` and `IDLE`. This is a wire-protocol boundary, not SQL syntax or a client-created SQLSTATE.\n\nUse the phase to interpret recovery:\n\n- Before startup completes, there is no session-level transaction and the driver may only have a connection exception. Preserve the raw server response if one was sent.\n- After startup reaches `Z`, an unknown frontend message is rejected by the established backend, but the selected branch is `FATAL`; the server then closes that socket. There is no `ROLLBACK` to send on it, even if the client had begun work before the protocol desynchronization.\n- On a pool or proxy path, compare the bytes sent by the owner with the protocol version and framing expected by the server. A fresh `SELECT 1` on another connection proves reachability only; it does not prove that an in-flight request committed.\n\nUse the primary text to identify the branch before choosing a recovery action. `bind message has ... parameter formats` and `bind message supplies ... parameters` point to extended-query cardinality; `no data left in message`, `insufficient data left in message`, `invalid string in message`, and `invalid message format` point to a malformed message body or boundary. These source-defined `ERROR` variants may be followed by `Sync` recovery when the driver preserves framing. `invalid frontend message type ...` with `FATAL` means the selected socket is already lost.\n\n## Response {#response}\n\nFor a `FATAL` response or server EOF, close and discard the affected socket, correct the protocol or proxy framing, and reconnect. For an extended-query `ERROR`, let the driver send protocol-valid `Sync` and wait for `ReadyForQuery`, then inspect the transaction status; `Sync` does not roll back a failed explicit transaction, so status `E` still requires `ROLLBACK` or an intentional savepoint recovery. If a non-idempotent request was in flight, reconcile its result before replaying it; the independent probe proves only that a fresh connection works.\n\nTreat the selected case as a session-termination branch: after server EOF, establish a fresh connection and repeat only a reconciled, idempotent operation. If the violation happened before a session existed, fix the startup/proxy configuration first. A client-side parser exception or a socket close without the server's `C` field is insufficient to label the event `08P01`.\n\nDo not improvise a byte sequence or treat the transaction as successfully committed. If the driver cannot preserve the message boundary or does not implement the Sync contract, discard the connection and reconcile the request. This source-only flow does not change the selected unknown-byte runtime, whose `FATAL` socket must be discarded.\n\n## Messages {#messages}\n\nThe fixed parser branch emits `FATAL` with primary `invalid frontend message type %d`; the numeric byte is dynamic. The selected byte `Y` is reported as `89`. The raw ErrorResponse, not a client exception, is the SQLSTATE authority.\n\nOther fixed source branches emit `ERROR` with these primary templates:\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\nThese Bind and message-buffer variants are source-only in this page; they are not additional runtime observations and do not all terminate the socket.\n\nThe selected wire sequence is: startup exchange → `Z` ReadyForQuery → valid frame with type byte `Y` (decimal `89`) → ErrorResponse `C=08P01`, `S=FATAL`, `M=invalid frontend message type 89` → server EOF. The collector captures those protocol fields and EOF directly; it is neither a csvlog/jsonlog record nor the later independent probe.\n\n## Representative case {#case}\n\n\nThe SQL probe is the independent connection check. The actual trigger is a runner-owned TCP handshake followed by an unknown frontend message byte; it cannot be represented by SQL alone.\n\n```sql\nSELECT 1;\n```\n\n\nThe selected 18.6 server record is C=`08P01`, S=`FATAL`, primary `invalid frontend message type 89`; startup reached `Z`, the server EOF assertion was `True`, and the separate probe returned `1` and `IDLE`. The raw trigger connection is therefore closed and never reused.\n\nThe downloadable case and evidence projections are [`08P01 case JSON`](#cases) and [`authored evidence`](#sources). The runner manifest is `verify/cases/08P01/cases.json`; the page SQL is checked against its shared registry before publication.\n\n## Versions {#versions}\n\nThe generated facts table records the locked catalogue snapshots and earliest observed definition. The selected natural runtime scope is PostgreSQL 18.6 and 10.21; this does not infer behavior for every intermediate release.\n\n## Related {#related}\n\n- [`08001` — sqlclient_unable_to_establish_sqlconnection](/wiki/sqlstate/08001/)\n- [`28000` — invalid_authorization_specification](/wiki/sqlstate/28000/)\n\n## Sources {#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, source-backed diagnosis and recovery guidance.","is_stale":false,"name":"","sections":[{"anchor":"","heading":"","html":"\u0026lt;h1\u0026gt;08P01\u0026lt;/h1\u0026gt;"},{"anchor":"at-a-glance","heading":"At a glance","html":"\u003cp\u003eSQLSTATE \u003ccode\u003e08P01\u003c/code\u003e is \u003cstrong\u003eprotocol_violation\u003c/strong\u003e in Class \u003ccode\u003e08\u003c/code\u003e. \u003ccode\u003e08P01\u003c/code\u003e means that a frontend/backend protocol message violated the wire contract. The selected raw TCP case completes startup and observes ReadyForQuery (\u003ccode\u003eZ\u003c/code\u003e), sends an unknown frontend byte \u003ccode\u003eY\u003c/code\u003e in a valid frame, receives C=\u003ccode\u003e08P01\u003c/code\u003e, S=\u003ccode\u003eFATAL\u003c/code\u003e, primary \u003ccode\u003einvalid frontend message type 89\u003c/code\u003e, and reads server EOF before the client closes the socket.\u003c/p\u003e"},{"anchor":"meaning","heading":"Meaning","html":"\u003cp\u003eThe server protocol parser accepts the startup exchange, then rejects an unknown frontend message type before it can dispatch SQL. In the selected path this is a FATAL \u003ccode\u003einvalid frontend message type 89\u003c/code\u003e, followed by server EOF; the code is therefore a synchronization boundary for the affected socket, not a SQL parser error.\u003c/p\u003e\n\u003cp\u003eThe important boundary is the wire state, not the SQL text. A client can reach \u003ccode\u003eReadyForQuery\u003c/code\u003e and still fail on its next message type, as the selected case does; a malformed startup frame or a proxy that changes message framing can fail even earlier and may leave no usable session. The selected runtime exercises the unknown-message dispatch branch; the fixed source evidence below also covers distinct Bind and message-buffer parser branches, while other transport failures must be identified from their own ErrorResponse or log evidence.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e08P01\u003c/code\u003e does not imply one severity or one socket outcome. In the fixed extended-query path, a Bind message with a mismatched parameter-format count or parameter count reports \u003ccode\u003eERROR\u003c/code\u003e; the top-level loop aborts the current command and waits for a protocol-valid \u003ccode\u003eSync\u003c/code\u003e before sending the next \u003ccode\u003eReadyForQuery\u003c/code\u003e. The fixed message-buffer readers likewise use \u003ccode\u003eERROR\u003c/code\u003e for missing bytes, invalid strings, and trailing data. Those recoverable protocol errors are distinct from an unknown message type, which is a \u003ccode\u003eFATAL\u003c/code\u003e boundary because the server can no longer trust message synchronization.\u003c/p\u003e"},{"anchor":"diagnosis","heading":"Diagnosis","html":"\u003cp\u003eInspect driver/proxy protocol version, message type, frame length, startup mode, and connection ownership. The \u003ccode\u003ecollector\u003c/code\u003e recorded in the selected evidence is a raw protocol ErrorResponse collector (C/S/M plus server EOF), not csvlog/jsonlog. The FATAL socket is closed by the server and is never reused; a separate runner-owned connection returns \u003ccode\u003eSELECT 1\u003c/code\u003e and \u003ccode\u003eIDLE\u003c/code\u003e. This is a wire-protocol boundary, not SQL syntax or a client-created SQLSTATE.\u003c/p\u003e\n\u003cp\u003eUse the phase to interpret recovery:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBefore startup completes, there is no session-level transaction and the driver may only have a connection exception. Preserve the raw server response if one was sent.\u003c/li\u003e\n\u003cli\u003eAfter startup reaches \u003ccode\u003eZ\u003c/code\u003e, an unknown frontend message is rejected by the established backend, but the selected branch is \u003ccode\u003eFATAL\u003c/code\u003e; the server then closes that socket. There is no \u003ccode\u003eROLLBACK\u003c/code\u003e to send on it, even if the client had begun work before the protocol desynchronization.\u003c/li\u003e\n\u003cli\u003eOn a pool or proxy path, compare the bytes sent by the owner with the protocol version and framing expected by the server. A fresh \u003ccode\u003eSELECT 1\u003c/code\u003e on another connection proves reachability only; it does not prove that an in-flight request committed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eUse the primary text to identify the branch before choosing a recovery action. \u003ccode\u003ebind message has ... parameter formats\u003c/code\u003e and \u003ccode\u003ebind message supplies ... parameters\u003c/code\u003e point to extended-query cardinality; \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, and \u003ccode\u003einvalid message format\u003c/code\u003e point to a malformed message body or boundary. These source-defined \u003ccode\u003eERROR\u003c/code\u003e variants may be followed by \u003ccode\u003eSync\u003c/code\u003e recovery when the driver preserves framing. \u003ccode\u003einvalid frontend message type ...\u003c/code\u003e with \u003ccode\u003eFATAL\u003c/code\u003e means the selected socket is already lost.\u003c/p\u003e"},{"anchor":"response","heading":"Response","html":"\u003cp\u003eFor a \u003ccode\u003eFATAL\u003c/code\u003e response or server EOF, close and discard the affected socket, correct the protocol or proxy framing, and reconnect. For an extended-query \u003ccode\u003eERROR\u003c/code\u003e, let the driver send protocol-valid \u003ccode\u003eSync\u003c/code\u003e and wait for \u003ccode\u003eReadyForQuery\u003c/code\u003e, then inspect the transaction status; \u003ccode\u003eSync\u003c/code\u003e does not roll back a failed explicit transaction, so status \u003ccode\u003eE\u003c/code\u003e still requires \u003ccode\u003eROLLBACK\u003c/code\u003e or an intentional savepoint recovery. If a non-idempotent request was in flight, reconcile its result before replaying it; the independent probe proves only that a fresh connection works.\u003c/p\u003e\n\u003cp\u003eTreat the selected case as a session-termination branch: after server EOF, establish a fresh connection and repeat only a reconciled, idempotent operation. If the violation happened before a session existed, fix the startup/proxy configuration first. A client-side parser exception or a socket close without the server's \u003ccode\u003eC\u003c/code\u003e field is insufficient to label the event \u003ccode\u003e08P01\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eDo not improvise a byte sequence or treat the transaction as successfully committed. If the driver cannot preserve the message boundary or does not implement the Sync contract, discard the connection and reconcile the request. This source-only flow does not change the selected unknown-byte runtime, whose \u003ccode\u003eFATAL\u003c/code\u003e socket must be discarded.\u003c/p\u003e"},{"anchor":"messages","heading":"Messages","html":"\u003cp\u003eThe fixed parser branch emits \u003ccode\u003eFATAL\u003c/code\u003e with primary \u003ccode\u003einvalid frontend message type %d\u003c/code\u003e; the numeric byte is dynamic. The selected byte \u003ccode\u003eY\u003c/code\u003e is reported as \u003ccode\u003e89\u003c/code\u003e. The raw ErrorResponse, not a client exception, is the SQLSTATE authority.\u003c/p\u003e\n\u003cp\u003eOther fixed source branches emit \u003ccode\u003eERROR\u003c/code\u003e with these primary templates:\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\u003eThese Bind and message-buffer variants are source-only in this page; they are not additional runtime observations and do not all terminate the socket.\u003c/p\u003e\n\u003cp\u003eThe selected wire sequence is: startup exchange → \u003ccode\u003eZ\u003c/code\u003e ReadyForQuery → valid frame with type byte \u003ccode\u003eY\u003c/code\u003e (decimal \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 → server EOF. The collector captures those protocol fields and EOF directly; it is neither a csvlog/jsonlog record nor the later independent probe.\u003c/p\u003e"},{"anchor":"case","heading":"Representative case","html":"\u003cp\u003eThe SQL probe is the independent connection check. The actual trigger is a runner-owned TCP handshake followed by an unknown frontend message byte; it cannot be represented by SQL alone.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-sql\"\u003eSELECT 1;\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe selected 18.6 server record is C=\u003ccode\u003e08P01\u003c/code\u003e, S=\u003ccode\u003eFATAL\u003c/code\u003e, primary \u003ccode\u003einvalid frontend message type 89\u003c/code\u003e; startup reached \u003ccode\u003eZ\u003c/code\u003e, the server EOF assertion was \u003ccode\u003eTrue\u003c/code\u003e, and the separate probe returned \u003ccode\u003e1\u003c/code\u003e and \u003ccode\u003eIDLE\u003c/code\u003e. The raw trigger connection is therefore closed and never reused.\u003c/p\u003e\n\u003cp\u003eThe downloadable case and evidence projections are \u003ca href=\"#cases\"\u003e\u003ccode\u003e08P01 case JSON\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"#sources\"\u003e\u003ccode\u003eauthored evidence\u003c/code\u003e\u003c/a\u003e. The runner manifest is \u003ccode\u003everify/cases/08P01/cases.json\u003c/code\u003e; the page SQL is checked against its shared registry before publication.\u003c/p\u003e"},{"anchor":"versions","heading":"Versions","html":"\u003cp\u003eThe generated facts table records the locked catalogue snapshots and earliest observed definition. The selected natural runtime scope is PostgreSQL 18.6 and 10.21; this does not infer behavior for every intermediate release.\u003c/p\u003e"},{"anchor":"related","heading":"Related","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":"Sources","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":"SQLSTATE 08P01 is protocol_violation in Class 08. 08P01 means that a frontend/backend protocol message violated the wire contract. The selected raw TCP case completes startup and observes ReadyForQuery (Z), sends an unknown frontend byte Y in a valid frame, receives C=08P01, S=FATAL, primary invalid frontend message type 89, and reads server EOF before the client closes the socket.","title":"08P01 — protocol_violation","translation_source_rev":"52bbab7ed2c06515ec654d1e122d29da72ce3ff3ff75f55e38e96c133a32e882"}},"RequestedLocale":"en","Fallback":false,"Versions":["10","11","12","13","14","15","16","17","18","19","20","8.1","8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":{"aliases":[],"catalogue_notes":{"earliest_observed":"7.4","formal_scope":"9.0.0..18.6","latest_observed":"18.6","matrix_scope":["9.0.23","9.1.24","9.2.24","9.3.25","9.4.26","9.5.25","9.6.24","10.23","11.22","12.22","13.23","14.24","15.19","16.15","17.11","18.6"],"pre9_scope":{"formal_tag_count":191,"maximum_release":"8.4.22","minimum_release":"7.0.0","source_definition_count":153,"source_doc_count":153,"source_file_count":306,"source_scope":"7.4..8.4 definition files; 7.0..7.3 candidate-path source gap probes","source_tag_count":153},"pre9_status":"present","preview_scope":["19beta3"]},"class":"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"}}]}
