Tatsuo Ishii <is...@sraoss.co.jp> writes: > Below is outputs from "pgproto" command coming with Pgpool-II. > (Lines starting "FE" represents a message from frontend to backend. > Lines starting "BE" represents a message from backend to frontend.)
> FE=> Parse(stmt="", query="SET extra_float_digits = 3") > FE=> Bind(stmt="", portal="") > FE=> Execute(portal="") > FE=> Parse(stmt="", query="SET extra_float_digits = 3") > FE=> Bind(stmt="", portal="") > FE=> Execute(portal="") > FE=> Query (query="SET extra_float_digits = 3") > <= BE ParseComplete > <= BE BindComplete > <= BE CommandComplete(SET) > <= BE ParseComplete > <= BE BindComplete > <= BE CommandComplete(SET) > <= BE CommandComplete(SET) > <= BE ReadyForQuery(I) > FE=> Terminate > As you can see, two "SET extra_float_digits = 3" is sent in the > extended query protocol, then one "SET extra_float_digits = 3" follows > in the simple query protocol. No sync message is sent. However, I get > ReadyForQuery at the end. It seems the extended query protocol is > ended by a simple query protocol message instead of a sync message. > My question is, is this legal in terms of fronted/backend protocol? I think it's poor practice, at best. You should end the extended-protocol query cycle before invoking simple query. I'm disinclined to document, or make any promises about, what happens if you mix the protocols. regards, tom lane