On Fri, 29 Dec 2023 at 19:32, Jeff Davis <pg...@j-davis.com> wrote: > On Fri, 2023-12-29 at 18:29 +0100, Jelte Fennema-Nio wrote: > > There's definitely still some more work that needs to be done > > (docs for new libpq APIs, protocol version bump, working protocol > > version negotiation). > > That is my biggest concern right now: what will new clients connecting > to old servers do? > > If the version is bumped, should we look around for other unrelated > protocol changes to make at the same time? Do we want a more generic > form of negotiation?
This is not that big of a deal. Since it's only an addition of a new message type, it's completely backwards compatible with the current protocol version. i.e. as long as a client just doesn't send it when the server reports an older protocol version everything works fine. The protocol already has version negotiation built in and the server implements it in a reasonable way. The only problem is that no-one bothered to implement the client side of it in libpq, because it wasn't necessary yet since 3.x only had a single minor version. Patch v20230911-0003[5] from thread [3] implements client side handling in (imho) a sane way. I think it probably still needs some small tweaks and discussion on if this is the exact user facing API that we want. But there's no big hurdles implementation or protocol wise to make the next libpq client backwards compatible with old servers. I think it's worth merging something like that patch anyway, because that's necessary for pretty much any protocol changes we would like to do. After that there's pretty much no downside to bumping minor versions of the protocol anymore, so we could even do it every release if needed. Thus I don't think it's necessary to bulk any protocol changes together. [3]: https://www.postgresql.org/message-id/flat/AB607155-8FED-4C8C-B702-205B33884CBB%40yandex-team.ru#961c695d190cdccb3975a157b22ce9d8 [5]: https://www.postgresql.org/message-id/attachment/150192/v20230911-0003-allow-to-connect-to-server-with-major-protocol-versi.patch