On Thu, 8 Jan 2026 at 03:51, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> I'm pretty bemused by this entire discussion. We have a perfectly
> good design for handling new protocol features without any hard
> protocol break, so I don't understand why people are insisting on
> doing things incompatibly when they could be doing them compatibly.
The whole point of minor protocol versions is that they don't do a
hard protocol break. 3.2 will not be a hard protocol break, 3.3 won't
be and neither will 3.4
> I quote from Robert's commit ae65f6066 (the same one that invented
> NegotiateProtocolVersion):
The section before is just as worth quoting, because it makes clear
that minor protocol versions are not a hard protocol break.
Previously, any attempt to request a 3.x protocol version other than
3.0 would lead to a hard connection failure, which made the minor
protocol version really no different from the major protocol version
and precluded gentle protocol version breaks. Instead, when the
client requests a 3.x protocol version where x is greater than 0, send
the new NegotiateProtocolVersion message to convey that we support
only 3.0. This makes it possible to introduce new minor protocol
versions without requiring a connection retry when the server is
older.
> I think that the right way forward is that the protocol version
> stays at 3.2 for several decades more, and we implement requests for
> individual protocol-level features through the "_pq_." mechanism.
Is the misunderstanding of 3.3 being a hard protocol break the only
reason you think that? Or do you have some more reasons?