Re: Add new protocol message to change GUCs for usage with future protocol-only GUCs
Jelte Fennema-Nio <me@jeltef.nl>
From: Jelte Fennema-Nio <me@jeltef.nl>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>,
Jacob Burroughs <jburroughs@instructure.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Dave Cramer <davecramer@gmail.com>, "Andrey M. Borodin" <x4mmm@yandex-team.ru>,
Pavel Stehule <pavel.stehule@gmail.com>, Jeff Davis <pgsql@j-davis.com>, Peter Eisentraut <peter@eisentraut.org>
Date: 2024-01-10T17:26:36Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
libpq: Add min/max_protocol_version connection options
- 285613c60a7a 18.0 landed
-
libpq: Handle NegotiateProtocolVersion message differently
- 5070349102af 18.0 landed
-
Add PQfullProtocolVersion() to surface the precise protocol version.
- cdb6b0fdb0b2 18.0 landed
-
Do not hardcode PG_PROTOCOL_LATEST in NegotiateProtocolVersion
- 516b87502dc1 18.0 landed
-
libpq: Handle NegotiateProtocolVersion message
- bbf9c282ce92 16.0 cited
-
Provide for forward compatibility with future minor protocol versions.
- ae65f6066dc3 11.0 cited
Attachments
- v6-0003-Prepare-server-code-for-addition-of-protocol-exte.patch (application/octet-stream) patch v6-0003
- v6-0002-libpq-Handle-NegotiateProtocolVersion-message-mor.patch (application/octet-stream) patch v6-0002
- v6-0004-libpq-Include-minor-version-number-in-PQprotocolV.patch (application/octet-stream) patch v6-0004
- v6-0001-libpq-Remove-instance-of-hardcoded-protocol-versi.patch (application/octet-stream) patch v6-0001
- v6-0005-Bump-protocol-version-to-3.1.patch (application/octet-stream) patch v6-0005
- v6-0006-Add-protocol-message-to-change-parameters.patch (application/octet-stream) patch v6-0006
- v6-0008-Add-_pq_.protocol_managed_params-protocol-extensi.patch (application/octet-stream) patch v6-0008
- v6-0009-Add-tests-for-ParameterSet-and-_pq_.protocol_mana.patch (application/octet-stream) patch v6-0009
- v6-0010-Add-_pq_.report_parameters-protocol-extension.patch (application/octet-stream) patch v6-0010
- v6-0007-Add-GUC-contexts-for-protocol-extensions.patch (application/octet-stream) patch v6-0007
v6 attached with the following changes: 1. Fixed rebase conflicts with master 2. removed PGC_S_PROTOCOL (but kept PGC_PROTOCOL and PGC_SU_PROTOCOL). This extra source level was not needed. And after some more testing I realized this extra source level even caused problems, since protocol messages could not override values set by SET commands anymore. 3. Added a new patch (0010) with a protocol parameter to configure which GUCs are GUC_REPORT. This is partially to show that the GUC interface makes sense for protocol parameters, but also because this would be an extremely useful feature for connection poolers. And [2] would be able to use this too. 4. Don't error, but only warn, if a GUC provided to _pq_.protocol_managed_params is unknown. It seemed useful to be able to specify GUCs in this list that not all Postgres versions support in the StartupMessage, without having to guess what postgres version you're going to connect to. [2]: https://www.postgresql.org/message-id/flat/CAFj8pRBFU-WzzQhNrwRHn67N0Ug8a9-0-9BOo69PPtcHiBDQMA@mail.gmail.com