Currently we document the message size length as a constant like Int32(5) for some message types in the frontend backend protocol doument[1].
ReadyForQuery (B) Byte1('Z') Identifies the message type. ReadyForQuery is sent whenever the backend is ready for a new query cycle. Int32(5) Length of message contents in bytes, including self. : : I think this may bring a misunderstanding to some implementer of the protocol. i.e. He may wright a code like this to save the work to interpret the message length field (this is a backend side code). if (message_char == 'Z') { read_rest_of_message(5); : : } instead of: if (message_char == 'Z') { read_message_lenfgth_field; convert_it_to_host_order; read_rest_of_message(n); : : } I think the former code is not good because we might change the message length in the future when protocol extensions are implemented for this particular message type, and the message length may become different length or even variable length. So my propsal is changing: Int32(5) to: Int32 In the same sense we may want to change the sentence at the very beginning of the section, particulary this: "the message format is defined so that the message end can be found without reference to the byte count". Notice that although each message includes a byte count at the beginning, the message format is defined so that the message end can be found without reference to the byte count. This aids validity checking. (The CopyData message is an exception, because it forms part of a data stream; the contents of any individual CopyData message cannot be interpretable on their own.) [1] https://www.postgresql.org/docs/current/protocol-message-formats.html What do you think? Best reagards, -- Tatsuo Ishii SRA OSS K.K. English: http://www.sraoss.co.jp/index_en/ Japanese:http://www.sraoss.co.jp