Re: libpq: Bump protocol version to version 3.2 at least until the first/second beta
Jelte Fennema <postgres@jeltef.nl>
From: Jelte Fennema-Nio <postgres@jeltef.nl>
To: Jacob Champion <jacob.champion@enterprisedb.com>
Cc: Andres Freund <andres@anarazel.de>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Heikki Linnakangas <hlinnaka@iki.fi>, Robert Haas <robertmhaas@gmail.com>
Date: 2026-01-24T10:10:27Z
Lists: pgsql-hackers
Attachments
- image.png (image/png)
On Sat, 24 Jan 2026 at 00:38, Jacob Champion <jacob.champion@enterprisedb.com> wrote: > WDYT? Overall, I think the changes and the split look fine. And I'd be happy with having it committed as is. A few thoughts on the docs: 1. I like the version table split. I think it might be better to do the same for protocol extensions too. Primarily because I think the tiny empty cell at the start of each row looks weird (see screenshot), but also just for consistency. 2. In my v5 I created a dedicated section header for protocol extensions instead of including it in the extension. I think that's slightly nicer, primarily so you can link to that section from the StartupMessage docs (including the introductory paragraph), instead of having to link to the table. 3. In the table in my v5 I use "extension name" as a column instead of "parameter name" so I did not have to include the "_pq_." prefix. I'm going a bit back and forth between which I like better. 4. I think mentioning the "_pq_." prefix in the paragraph above the extension table would be good. Otherwise once we get more extensions you only learn about it once you get to the reserved extensions section. A few thoughts on the implementation: 1. If you like the randomization I did in my v5-0003, but don't want to commit it yet. Then I think it would be good to change the reserved protocol extension to rename to _pq_.test_protocol_negotiation_0000. So that if we commit it later we don't have both _pq_.test_protocol_negotiation and _pq_.test_protocol_negotiation_XXXX reserved, but only have the one with a suffix reserved. 2. It might be nice to also error duplicate keys in NegotiateProtocolVersion.
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
libpq: Grease the protocol by default
- 4966bd3ed95e 19 (unreleased) landed
-
libpq: Prepare for protocol grease during 19beta
- d8d7c5dc8f74 19 (unreleased) landed
-
doc: Expand upon protocol versions and extensions
- e3d37853ecd5 19 (unreleased) landed
-
libpq_pipeline: Test the default protocol version
- 9b9eaf08ab2d 19 (unreleased) landed