On Mon, 29 Jan 2024 at 20:15, Tatsuo Ishii <is...@sraoss.co.jp> wrote:
> Hello Dave, > > > 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. > > From [1] I think the JDBC driver sends something like below if > autosave=always option is specified. > > "BEGIN READ ONLY" Parse/Bind/Eexecute (in the extended query protocol) > "SAVEPOINT PGJDBC_AUTOSAVE" (in the simple query protocol) > > It seems the SAVEPOINT is sent without finishing the extended query > protocol (i.e. without Sync message). Is it possible for the JDBC > driver to issue a Sync message before sending SAVEPOINT in simple > query protocol? Or you can send SAVEPOINT using the extended query > protocol. > > [1] > https://www.pgpool.net/pipermail/pgpool-general/2023-December/009051.html > > Hi Tatsuo, Yes, it would be possible. Can you create an issue on github? Issues ยท pgjdbc/pgjdbc (github.com) <https://github.com/pgjdbc/pgjdbc/issues> Dave