Re: Correct documentation for protocol version

From: Dave Cramer <davecramer(at)gmail(dot)com>
To: Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Correct documentation for protocol version
Date: 2025-04-10 15:49:28
Message-ID: CADK3HHLLU21LgvPMR0b2CR85ME+WukmG3w=p9JVv0ahv562mnA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu, 10 Apr 2025 at 11:17, Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com>
wrote:

>
>
> On 2025/04/10 23:40, Dave Cramer wrote:
> >
> > On Thu, 10 Apr 2025 at 09:54, Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com
> <mailto:masao(dot)fujii(at)oss(dot)nttdata(dot)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 Content-Type Size
protocol-2.patch application/octet-stream 1.2 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2025-04-10 16:00:32 Re: Capturing both IP address and hostname in the log
Previous Message Xuneng Zhou 2025-04-10 15:43:20 Re: Proposal: Limitations of palloc inside checkpointer