Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vUl0o-007Dza-0Q for pgsql-hackers@arkaria.postgresql.org; Sun, 14 Dec 2025 12:15:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vUl0m-00CkEm-0g for pgsql-hackers@arkaria.postgresql.org; Sun, 14 Dec 2025 12:15:40 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vUl0l-00CkEd-2X for pgsql-hackers@lists.postgresql.org; Sun, 14 Dec 2025 12:15:40 +0000 Received: from mail-oo1-xc33.google.com ([2607:f8b0:4864:20::c33]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vUl0l-000cGZ-06 for pgsql-hackers@lists.postgresql.org; Sun, 14 Dec 2025 12:15:39 +0000 Received: by mail-oo1-xc33.google.com with SMTP id 006d021491bc7-65b3d3ac972so1613891eaf.0 for ; Sun, 14 Dec 2025 04:15:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765714538; x=1766319338; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=6diZsZWTY5lfKXnTgTTvlqRnL+tHwTVoSftzTm7Wrqc=; b=b9eeK8uXiSAXpjrhAkwOI2B3G2djF4orcHma8TkF41QsMyIxy4s/vhoXUGebqbWwy2 5LWmRlUQ/UztVdybuifdzXFeoDuSTLe/N2eaEn37VjXaU4DTjozK9HJOVgoeG10SxAj8 8zIDUPnmf8Rbvs9+VyUJ1pOeGDqipmk+Vjtw1rpGdaT2WBEymhn7dHNnj8xYT01PhGZI Hb3IBJ+mHjwjt7K4SaiNRoF3bi9/FNImt4qH/2a7CDzr/DCG+Epdy0IWfOvUdBeI/d7J I8E2nrxzQ7xSuCggyIAOCabZgkoCPY6KaPZxnfjeb87ORoKlS7Oxs0PzzrrYcjgX8KkU mH+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765714538; x=1766319338; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=6diZsZWTY5lfKXnTgTTvlqRnL+tHwTVoSftzTm7Wrqc=; b=tpv/pCd8jiDMx721gxjteaI0w9rFlKG9wuWm/lW5cISD3rSpudVbB5IUOPAeyvGYPA P0LYXXclkGVq3zEBGf1MncDLnNKLpzUpFBWYhu/tLRF7Hujmst8ukg/itd8RR3brGHCS DY26l635AtUH4Afc8mYuVRLCGlRKVXZMWs2G4lvzyDO0U7DFDGkKr2WKNcRTI0uNproH xluZIIqciK832y+SvXFuwrxn1K9AJeTBVWqoQimFU3z0wZ8SJ3LGUWmN/8QNo4rN/T7V eAb3IyMcH5nYBPDtu17l1LDCyFNQP08sz8qdstt9FAH1Lu9mzGsXst5/MbNrWOsaBY0s jFjg== X-Forwarded-Encrypted: i=1; AJvYcCXo+2/zw5gcd2sIlBDgIQ12dZU06cCesUg5xDCunGax1N6gSCtyOrGy+uuu+yrpEjjzQ/05OB8Ph27z4HKc@lists.postgresql.org X-Gm-Message-State: AOJu0YzlekPkRrWSCyS1GMuCECj6dpsoKHIes6YnIKvGY62fwnmvk7RL /2Z8/N+TzrcIugYFA1fRjrxqYL6OTUzm08rK37rg9cH8CLyppdkQk5OyZGm8sPFsQEF1QulXJd6 oLENPlyXfNY+0+L25pcAsbI2rMDLl90I= X-Gm-Gg: AY/fxX6BhJUznSRuQxzgWIGPdTo7fIWe6gqjelLBUdhuIrYolayq9gccEiVfjMZ4yhe qr9mCakAZfQnJM7ogSx4ATkXyRP0UsRwYdDtZ/zI9dJezlBrjk+W9XHOaKSKYaoUcqRqsWiS5cU x6EVwMWCv8J67PNsUHk3lajVM58dma8tDfsyHH+qJtc8YmFgMJJagjynLcNXXBn6X0OoIrnFs7z T5MfxEtVhXRu12prZU8IKYznaKaxAGHwX2uC+V+CAkQMyJPzsN0utgNqJvgD6lYj4z9gQ== X-Google-Smtp-Source: AGHT+IGRjZTioyF0ZKSNvKmathor6+FjaTfOmJi8xO4cBnND7KWQOXhhrvFtHHujdao4Ij2au8RshZyHRpO2CwL/HiI= X-Received: by 2002:a05:6820:4b0d:b0:659:9a49:8ec3 with SMTP id 006d021491bc7-65b45288cf6mr3346009eaf.71.1765714537926; Sun, 14 Dec 2025 04:15:37 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Dave Cramer Date: Sun, 14 Dec 2025 07:15:22 -0500 X-Gm-Features: AQt7F2qjoclAVoqWhZ-2ll2qQsvrXqyzqyqP2C7OcEb7pFZn8CIf7vGI2mVnSx0 Message-ID: Subject: Re: Proposal to allow setting cursor options on Portals To: Jacob Champion Cc: Jelte Fennema-Nio , PostgreSQL Hackers , Heikki Linnakangas Content-Type: multipart/alternative; boundary="000000000000ced4010645e8739e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ced4010645e8739e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, 10 Dec 2025 at 12:41, Jacob Champion < jacob.champion@enterprisedb.com> wrote: > On Mon, Dec 8, 2025 at 1:43=E2=80=AFPM Jelte Fennema-Nio > wrote: > > 1. We still have fairly limited experience with protocol options, so > > afaik not everyone agrees what we should use a version bump for vs a > > protocol extension. > > I think it'd be helpful for proposals to describe why a minor version > bump was chosen over a protocol extension parameter (or vice versa), > so that we can begin to develop some consensus. > The reasons I chose a protocol bump include: 1/ I actually think this was an oversight from the original spec. I am not adding any new features to the server, only implementing existing options on a portal/cursor that should have been in the original protocol 2/ I'm hoping and expect that there will be other additions to the protocol for 3.3 such as returning the LSN after commit, binary return values per session > > To me, the conversation on the wire for this feature seems perfect for > an extension parameter: "Hello server, do you support this optional > thing in this one message type? If not, let me know." Especially since > the optional thing is itself an extensible bitmap! With the > minor-version strategy, if we added new bits in 3.6, clients who just > wanted those new bits would then have to implement support for every > feature in versions 3.4, 3.5, and 3.6 just to improve that one use > case, and that incentive mismatch leads to more ossification IMO. > > =3D Soapbox Follows =3D > > I've talked about it face-to-face with people, but to go on the public > record: I don't think this is a wise use of a minor version upgrade > strategy. I prefer protocol architectures that introduce separate > extensions first, then periodically bundle the critical and > highly-used extensions into a new minor version once they're sure that > _everyone_ should support those things. > > I know that 3.2 didn't do that. My view of 3.2 is that it was a big > compromise to get some things unstuck, so overall I'm glad we have it > -- but now that we have it, I'd rather that 3.next be more > intentional. Plus I think it's unwise to introduce a 3.3 before we're > confident that 3.2 can be widely deployed, and I'm trying to put > effort into the latter for 19, so that I'm not just sitting here > gatekeeping. > > pgjdbc already supports 3.2. Unfortunately we have no idea how many peopl= e actually use it. > IETF has a bunch of related case studies [1,2,3] that might be useful > reading, even if we decide that their experience differs heavily from > ours. > I read the articles which sadly gloss over protocol negotiation issues. Dave > > > --000000000000ced4010645e8739e Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

On Wed, = 10 Dec 2025 at 12:41, Jacob Champion <jacob.champion@enterprisedb.com> wrote:
On Mon, Dec 8, 2025 at 1:43= =E2=80=AFPM Jelte Fennema-Nio <postgres@jeltef.nl> wrote:
> 1. We still have fairly limited experience with protocol options, so > afaik not everyone agrees what we should use a version bump for vs a > protocol extension.

I think it'd be helpful for proposals to describe why a minor version bump was chosen over a protocol extension parameter (or vice versa),
so that we can begin to develop some consensus.

=C2=A0The reasons I chose a protocol bump include:
1/ I = actually think this was an oversight from the original spec. I am not addin= g any new features to the server, only implementing existing options on a p= ortal/cursor that should have been in the original protocol
2/ I&= #39;m hoping and expect that there will be other additions to the protocol = for 3.3 such as returning the LSN after commit, binary return values per se= ssion

To me, the conversation on the wire for this feature seems perfect for
an extension parameter: "Hello server, do you support this optional thing in this one message type? If not, let me know." Especially since=
the optional thing is itself an extensible bitmap! With the
minor-version strategy, if we added new bits in 3.6, clients who just
wanted those new bits would then have to implement support for every
feature in versions 3.4, 3.5, and 3.6 just to improve that one use
case, and that incentive mismatch leads to more ossification IMO.

=3D Soapbox Follows =3D

I've talked about it face-to-face with people, but to go on the public<= br> record: I don't think this is a wise use of a minor version upgrade
strategy. I prefer protocol architectures that introduce separate
extensions first, then periodically bundle the critical and
highly-used extensions into a new minor version once they're sure that<= br> _everyone_ should support those things.

I know that 3.2 didn't do that. My view of 3.2 is that it was a big
compromise to get some things unstuck, so overall I'm glad we have it -- but now that we have it, I'd rather that 3.next be more
intentional. Plus I think it's unwise to introduce a 3.3 before we'= re
confident that 3.2 can be widely deployed, and I'm trying to put
effort into the latter for 19, so that I'm not just sitting here
gatekeeping.

pgjdbc already supports 3.2. Unfortunately we have no= idea how many people actually use it.
=C2=A0
IETF has a bunch of related case studies [1,2,3] that might be useful
reading, even if we decide that their experience differs heavily from
ours.

I read the articles which sadly g= loss over protocol negotiation issues.

Dave=C2=A0<= /div>


--000000000000ced4010645e8739e--