> I guess you are just confused by the PRINTED order of the messages in the > log. > Note: wire order do not have to be exactly the same as the order in the log > since messages are buffered, then might be read in batches.
pgproto directly reads from socket using read system call. There's no buffer here.
> In other words, an application might just batch (send all three) close(s2), > close(s1), query(begin) messages, then read the responses. > How does it break protocol?
Again as I said before, the doc says in extended query protocol a sequence of extended messages (parse, bind. describe, execute, closes) should be followed by a sync message. ie.
close close sync query(begin)
Maybe
close close query(begin)
is not a violation of protocol, but still I would say this is buggy because of the reason Tom said, and I agree with him.
Curious what client is this that is violating the protocol.