public inbox for [email protected]  
help / color / mirror / Atom feed
From: Jacob Champion <[email protected]>
To: [email protected]
Subject: pgsql: libpq: Grease the protocol by default
Date: Mon, 23 Feb 2026 18:58:07 +0000
Message-ID: <[email protected]> (raw)

libpq: Grease the protocol by default

Send PG_PROTOCOL_GREASE and _pq_.test_protocol_negotiation, which were
introduced in commit d8d7c5dc8, by default, and fail the connection if
the server attempts to claim support for them. The hope is to provide
feedback to noncompliant implementations and gain confidence in our
ability to advance the protocol. (See the other commit for details.)

To help end users navigate the situation, a link to our documentation
that explains the behavior is displayed. We append this to the error
message when the NegotiateProtocolVersion response is incorrect, or when
the peer sends an error during startup that appears to be grease-
related.

It's still possible for users to connect to servers that don't support
protocol negotiation, by adding max_protocol_version=3.0 to their
connection strings. Only the default connection behavior is impacted.

This commit is tracked as a PG19 open item and will be reverted before
RC1. (The implementation here doesn't handle negotiation with later
server versions, so it can't be released into the wild as a
five-year-supported feature. But an improved implementation might be
able to do so, in the future...)

Author: Jelte Fennema-Nio <[email protected]>
Co-authored-by: Jacob Champion <[email protected]>
Discussion: https://postgr.es/m/DDPR5BPWH1RJ.1LWAK6QAURVAY%40jeltef.nl

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/4966bd3ed95e0d02bf220c4bad2b292963827dd4

Modified Files
--------------
doc/src/sgml/libpq.sgml                          | 17 ++++++++
doc/src/sgml/protocol.sgml                       | 11 +++++
src/interfaces/libpq/fe-connect.c                | 51 +++++++++++++++++++-----
src/interfaces/libpq/fe-misc.c                   | 18 +++++++++
src/interfaces/libpq/fe-protocol3.c              | 51 ++++++++++++++++++++++--
src/interfaces/libpq/libpq-int.h                 |  1 +
src/test/modules/libpq_pipeline/libpq_pipeline.c |  6 +--
7 files changed, 140 insertions(+), 15 deletions(-)



view thread (27+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected]
  Subject: Re: pgsql: libpq: Grease the protocol by default
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox