{"Entry":{"collection":"protocol","key":"readyforquery-b","name":"ReadyForQuery","aliases":["ReadyForQuery","Byte1('Z')"],"metadata":{"aliases":["ReadyForQuery","Byte1('Z')"],"category":"Backend messages","content_hash":"cf441ac0984b46de3d4678a2e0980150be68c43cc1b22f9519de9f50921768c4","imported_at":"2026-09-30T00:40:44.504362+08:00","name":"ReadyForQuery","name_zh":"","slug":"readyforquery-b","summary":"ReadyForQuery is a backend protocol message. Identifies the message type. ReadyForQuery is sent whenever the backend is ready for a new query cycle."}},"Definition":{"Collection":"protocol","Key":"readyforquery-b","SourceDatabase":"center","Version":"18","SourceTable":"protocol_message","SourceKey":"readyforquery-b","SourceRevision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","Facts":{"comparison_data":{"direction":"B","fields":[{"description":"Identifies the message type. ReadyForQuery is sent whenever the backend is ready for a new query cycle.","format":"Byte1('Z')"},{"description":"Length of message contents in bytes, including self.","format":"Int32(5)"},{"description":"Current backend transaction status indicator. Possible values are ' I ' if idle (not in a transaction block); ' T ' if in a transaction block; or ' E ' if in a failed transaction block (queries will be rejected until block is ended).","format":"Byte1"}]},"comparison_hash":"591e8768a3731f543bd4b28a2f7f0ca07e52f086608af4311e2022224d97a61f","description":["ReadyForQuery is a backend protocol message. Identifies the message type. ReadyForQuery is sent whenever the backend is ready for a new query cycle."],"direction":"B","facts":[{"label":"Direction","value":"Backend → frontend"},{"label":"First wire field","value":"Byte1('Z')"},{"label":"Field entries","value":"3"},{"label":"Documented flow contexts","value":"Start-up; Simple Query; Extended Query; Pipelining; Function Call; COPY Operations; Asynchronous Operations"}],"fields":[{"description":"Identifies the message type. ReadyForQuery is sent whenever the backend is ready for a new query cycle.","format":"Byte1('Z')"},{"description":"Length of message contents in bytes, including self.","format":"Int32(5)"},{"description":"Current backend transaction status indicator. Possible values are ' I ' if idle (not in a transaction block); ' T ' if in a transaction block; or ' E ' if in a failed transaction block (queries will be rejected until block is ended).","format":"Byte1"}],"manual_html":"\u003cdl\u003e\u003cdd\u003e\n\u003cdiv class=\"variablelist\"\u003e\n\u003cdl class=\"variablelist\"\u003e\n\u003cdt\u003e\u003cspan class=\"term\"\u003eByte1('Z')\u003c/span\u003e\u003c/dt\u003e\n\u003cdd\u003e\n\u003cp\u003eIdentifies the message type. ReadyForQuery is sent whenever the backend is ready for a new query cycle.\u003c/p\u003e\n\u003c/dd\u003e\n\u003cdt\u003e\u003cspan class=\"term\"\u003eInt32(5)\u003c/span\u003e\u003c/dt\u003e\n\u003cdd\u003e\n\u003cp\u003eLength of message contents in bytes, including self.\u003c/p\u003e\n\u003c/dd\u003e\n\u003cdt\u003e\u003cspan class=\"term\"\u003eByte1\u003c/span\u003e\u003c/dt\u003e\n\u003cdd\u003e\n\u003cp\u003eCurrent backend transaction status indicator. Possible values are '\u003ccode class=\"literal\"\u003eI\u003c/code\u003e' if idle (not in a transaction block); '\u003ccode class=\"literal\"\u003eT\u003c/code\u003e' if in a transaction block; or '\u003ccode class=\"literal\"\u003eE\u003c/code\u003e' if in a failed transaction block (queries will be rejected until block is ended).\u003c/p\u003e\n\u003c/dd\u003e\n\u003c/dl\u003e\n\u003c/div\u003e\n\u003c/dd\u003e\u003c/dl\u003e","manual_path":"/docs/18/protocol-message-formats.html","related":[{"label":"Protocol flow and exchange examples","url":"/docs/18/protocol-flow.html"},{"label":"Protocol overview","url":"/docs/18/protocol-overview.html"},{"label":"Start-up","url":"/docs/18/protocol-flow.html#PROTOCOL-FLOW-START-UP"},{"label":"Simple Query","url":"/docs/18/protocol-flow.html#PROTOCOL-FLOW-SIMPLE-QUERY"},{"label":"Extended Query","url":"/docs/18/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY"},{"label":"Pipelining","url":"/docs/18/protocol-flow.html#PROTOCOL-FLOW-PIPELINING"},{"label":"Function Call","url":"/docs/18/protocol-flow.html#PROTOCOL-FLOW-FUNCTION-CALL"},{"label":"COPY Operations","url":"/docs/18/protocol-flow.html#PROTOCOL-COPY"},{"label":"Asynchronous Operations","url":"/docs/18/protocol-flow.html#PROTOCOL-ASYNC"}],"release":{"channel":"stable","label":"18.6","major":"18","ref":"https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2","revision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"},"sections":[{"paragraphs":["The complete definition below retains repetition, counts and conditional fields. A numbered table row is a documented field definition, not a fixed byte offset. Integer encodings and flow rules follow the same-version protocol chapter."],"title":"Framing and repetition"}],"signature":"ReadyForQuery (B)","sources":[{"label":"PostgreSQL 18 English manual","path":"protocol-message-formats.html","sha256":"53f37652ac2c089e30ada87d8aee7bdd0f26695b03f275302e526a807d2a1f23","url":"/docs/18/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS-READYFORQUERY"}],"tables":[{"columns":[{"key":"c0","label":"Position"},{"key":"c1","label":"Format"},{"key":"c2","label":"Meaning"}],"key":"fields","rows":[{"c0":"1","c1":"Byte1('Z')","c2":"Identifies the message type. ReadyForQuery is sent whenever the backend is ready for a new query cycle."},{"c0":"2","c1":"Int32(5)","c2":"Length of message contents in bytes, including self."},{"c0":"3","c1":"Byte1","c2":"Current backend transaction status indicator. Possible values are ' I ' if idle (not in a transaction block); ' T ' if in a transaction block; or ' E ' if in a failed transaction block (queries will be rejected until block is ended)."}],"title":"Wire fields in documented order"}]},"ManualEvidence":{"manual_path":"/docs/18/protocol-message-formats.html","release":{"channel":"stable","label":"18.6","major":"18","ref":"https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2","revision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"},"sources":[{"label":"PostgreSQL 18 English manual","path":"protocol-message-formats.html","sha256":"53f37652ac2c089e30ada87d8aee7bdd0f26695b03f275302e526a807d2a1f23","url":"/docs/18/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS-READYFORQUERY"}]},"MeasuredEvidence":{}},"Text":{"Collection":"protocol","Key":"readyforquery-b","SourceDatabase":"center","Version":"18","Locale":"en","Title":"ReadyForQuery","Summary":"ReadyForQuery is a backend protocol message. Identifies the message type. ReadyForQuery is sent whenever the backend is ready for a new query cycle.","BodyHTML":"\u003cdl\u003e\u003cdd\u003e\n\u003cdiv\u003e\n\u003cdl\u003e\n\u003cdt\u003e\u003cspan\u003eByte1(\u0026#39;Z\u0026#39;)\u003c/span\u003e\u003c/dt\u003e\n\u003cdd\u003e\n\u003cp\u003eIdentifies the message type. ReadyForQuery is sent whenever the backend is ready for a new query cycle.\u003c/p\u003e\n\u003c/dd\u003e\n\u003cdt\u003e\u003cspan\u003eInt32(5)\u003c/span\u003e\u003c/dt\u003e\n\u003cdd\u003e\n\u003cp\u003eLength of message contents in bytes, including self.\u003c/p\u003e\n\u003c/dd\u003e\n\u003cdt\u003e\u003cspan\u003eByte1\u003c/span\u003e\u003c/dt\u003e\n\u003cdd\u003e\n\u003cp\u003eCurrent backend transaction status indicator. Possible values are \u0026#39;\u003ccode\u003eI\u003c/code\u003e\u0026#39; if idle (not in a transaction block); \u0026#39;\u003ccode\u003eT\u003c/code\u003e\u0026#39; if in a transaction block; or \u0026#39;\u003ccode\u003eE\u003c/code\u003e\u0026#39; if in a failed transaction block (queries will be rejected until block is ended).\u003c/p\u003e\n\u003c/dd\u003e\n\u003c/dl\u003e\n\u003c/div\u003e\n\u003c/dd\u003e\u003c/dl\u003e","SourceRevision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","ContentHash":"38ae8def636e6920505aa18f18c1a879421036606dd2d911438dad6c46aa11d1","Payload":{"description":["ReadyForQuery is a backend protocol message. Identifies the message type. ReadyForQuery is sent whenever the backend is ready for a new query cycle."],"manual_html":"\u003cdl\u003e\u003cdd\u003e\n\u003cdiv class=\"variablelist\"\u003e\n\u003cdl class=\"variablelist\"\u003e\n\u003cdt\u003e\u003cspan class=\"term\"\u003eByte1('Z')\u003c/span\u003e\u003c/dt\u003e\n\u003cdd\u003e\n\u003cp\u003eIdentifies the message type. ReadyForQuery is sent whenever the backend is ready for a new query cycle.\u003c/p\u003e\n\u003c/dd\u003e\n\u003cdt\u003e\u003cspan class=\"term\"\u003eInt32(5)\u003c/span\u003e\u003c/dt\u003e\n\u003cdd\u003e\n\u003cp\u003eLength of message contents in bytes, including self.\u003c/p\u003e\n\u003c/dd\u003e\n\u003cdt\u003e\u003cspan class=\"term\"\u003eByte1\u003c/span\u003e\u003c/dt\u003e\n\u003cdd\u003e\n\u003cp\u003eCurrent backend transaction status indicator. Possible values are '\u003ccode class=\"literal\"\u003eI\u003c/code\u003e' if idle (not in a transaction block); '\u003ccode class=\"literal\"\u003eT\u003c/code\u003e' if in a transaction block; or '\u003ccode class=\"literal\"\u003eE\u003c/code\u003e' if in a failed transaction block (queries will be rejected until block is ended).\u003c/p\u003e\n\u003c/dd\u003e\n\u003c/dl\u003e\n\u003c/div\u003e\n\u003c/dd\u003e\u003c/dl\u003e","related":[{"label":"Protocol flow and exchange examples","url":"/docs/18/protocol-flow.html"},{"label":"Protocol overview","url":"/docs/18/protocol-overview.html"},{"label":"Start-up","url":"/docs/18/protocol-flow.html#PROTOCOL-FLOW-START-UP"},{"label":"Simple Query","url":"/docs/18/protocol-flow.html#PROTOCOL-FLOW-SIMPLE-QUERY"},{"label":"Extended Query","url":"/docs/18/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY"},{"label":"Pipelining","url":"/docs/18/protocol-flow.html#PROTOCOL-FLOW-PIPELINING"},{"label":"Function Call","url":"/docs/18/protocol-flow.html#PROTOCOL-FLOW-FUNCTION-CALL"},{"label":"COPY Operations","url":"/docs/18/protocol-flow.html#PROTOCOL-COPY"},{"label":"Asynchronous Operations","url":"/docs/18/protocol-flow.html#PROTOCOL-ASYNC"}],"sections":[{"paragraphs":["The complete definition below retains repetition, counts and conditional fields. A numbered table row is a documented field definition, not a fixed byte offset. Integer encodings and flow rules follow the same-version protocol chapter."],"title":"Framing and repetition"}],"tables":[{"columns":[{"key":"c0","label":"Position"},{"key":"c1","label":"Format"},{"key":"c2","label":"Meaning"}],"key":"fields","rows":[{"c0":"1","c1":"Byte1('Z')","c2":"Identifies the message type. ReadyForQuery is sent whenever the backend is ready for a new query cycle."},{"c0":"2","c1":"Int32(5)","c2":"Length of message contents in bytes, including self."},{"c0":"3","c1":"Byte1","c2":"Current backend transaction status indicator. Possible values are ' I ' if idle (not in a transaction block); ' T ' if in a transaction block; or ' E ' if in a failed transaction block (queries will be rejected until block is ended)."}],"title":"Wire fields in documented order"}]}},"RequestedLocale":"zh-Hans","Fallback":true,"Versions":["10","11","12","13","14","15","16","17","18","19","20"],"Locales":["en"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
