On Thu, 10 Apr 2025 at 11:17, Fujii Masao <masao.fu...@oss.nttdata.com>
wrote:

>
>
> On 2025/04/10 23:40, Dave Cramer wrote:
> >
> > On Thu, 10 Apr 2025 at 09:54, Fujii Masao <masao.fu...@oss.nttdata.com
> <mailto:masao.fu...@oss.nttdata.com>> wrote:
> >
> >
> >
> >     On 2025/04/10 18:52, Dave Cramer wrote:
> >      > Greetings,
> >      >
> >      > The current docs say that if a client asks for a protocol that
> the backend doesn't support, it will return the newest minor version.
> https://www.postgresql.org/docs/current/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS-NEGOTIATEPROTOCOLVERSION
> <
> https://www.postgresql.org/docs/current/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS-NEGOTIATEPROTOCOLVERSION>
> <
> https://www.postgresql.org/docs/current/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS-NEGOTIATEPROTOCOLVERSION
> <
> https://www.postgresql.org/docs/current/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS-NEGOTIATEPROTOCOLVERSION
> >>
> >      >
> >      > However that isn't what it returns. It actually returns the
> entire newest protocol that it supports. Attached is a patch to fix the
> docs.
> >
> >     As far as I read the code, the server returns the protocol version
> requested by
> >     the client if it's less than or equal to the latest version the
> server supports.
> >     Otherwise, it returns the latest supported version. So the proposed
> description
> >     doesn't seem accurate either, does it?
> >
> > I've added a note as to when this is sent. AFAICT through testing and
> the fact that the pgjdbc driver has never handled this message
> > I'm pretty sure it only sends this message if the requested protocol is
> not equal to the protocol the server supports.
>
> No, the message is also sent when the client requests protocol options that
> the server doesn't recognize. In that case, if the client requests an older
> protocol version along with unknown options, the server responds with
> the requested protocol version, not the latest one.
>

OK, I hadn't contemplated the unrecognized options. However AFAICT the
documentation in the code state

/*
* If the client requested a newer protocol version or if the client
* requested any protocol options we didn't recognize, let them know
* the newest minor protocol version we do support and the names of
* any unrecognized options.
*/

and the code agrees that we send the latest protocol version that we
support, not the requested one.

Dave

Attachment: protocol-2.patch
Description: Binary data

Reply via email to