Re: Proposal to allow setting cursor options on Portals

Jelte Fennema-Nio <postgres@jeltef.nl>

From: Jelte Fennema-Nio <postgres@jeltef.nl>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Jacob Champion <jacob.champion@enterprisedb.com>, Dave Cramer <davecramer@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Heikki Linnakangas <hlinnaka@iki.fi>
Date: 2026-01-08T07:44:16Z
Lists: pgsql-hackers
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?



Commits

  1. Fix distinctness check for queries with grouping sets

  2. Provide for forward compatibility with future minor protocol versions.