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 1vSj0k-004M4y-1P for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Dec 2025 21:43:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vSj0i-001lnZ-2v for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Dec 2025 21:43:13 +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 1vSj0i-001lnQ-1i for pgsql-hackers@lists.postgresql.org; Mon, 08 Dec 2025 21:43:12 +0000 Received: from mail-lf1-x132.google.com ([2a00:1450:4864:20::132]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vSj0f-003pBY-04 for pgsql-hackers@lists.postgresql.org; Mon, 08 Dec 2025 21:43:11 +0000 Received: by mail-lf1-x132.google.com with SMTP id 2adb3069b0e04-5958232f806so5241845e87.0 for ; Mon, 08 Dec 2025 13:43:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1765230188; x=1765834988; 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=4oFCDS4gUPKFDZOJC1nlFhSVP1xOswfUMK57XetKgYM=; b=fK7+7QKTUFOlAda6hw8noNODPJb1+GHGEx7U0psMCwmdmWjpcuRxUU0HRd3VeqBLab f71bJOHqYHZmI+KO4ioaFrADtD3mmFb491hS+cFhhqxuHE0RiAy9HyWyA2t4txAq4lTO yIQ0Y7a6ePXjK8E1UOL26mkcX5fCs49FaFjk3CteyVY1BurWmqrGe2bEtfQb6GAnvov5 XLeqCy93ghduzRu7Rgif08DopT7D0ssee0fPNzHCKpTTXfFPFTD3sKMhyX0+z5vQDHji PAVPc72sPLsQRGBw9eeK11VHgF7ADPNRYmNW5brUfm9HAOgoo8brGLMyGUmCRZcPrR5K UVwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765230188; x=1765834988; 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=4oFCDS4gUPKFDZOJC1nlFhSVP1xOswfUMK57XetKgYM=; b=l+1e7SPfa0RGcELO+6Jy8VJsVftL6/YNylmB5g+SGufMWIpevbKRv5RCOrgYU8Ul32 Uzdur8DAvNbHBM+DoahB36e7PdQHGXyWwhXacCmcVzKhY01Pyo3U3ksoF9CUyYkMAb6X 4xtF4fCRqpv0uDxGYemmwj5sBgq5bfv3pLBbJZKU/Q/+BuYkqo4PWTJgDn2DpqGtbdKy C8Vi+7hn0evYzSRjRgs3hp8o1MvCDvsChya0Bbb6AynXwEd+YYAjNDvIGLwa5XJZOm1c KsU4eoe+2bSqbKLmzhdDHeCLYDcPltDYFIhci51jNAXXmmUYCYr+T3OMYVuNf1MK6pm0 luWw== X-Gm-Message-State: AOJu0YwLEK9iGG53J8hQFMjuV78tDZWsbJVcgvNRSuzmsYe1Qmn+BVnB q0aNyWzTFUHs5Wjx5RLWkXmHp9EPQu8OJJuCDosQQGl2/mqt+T6t4sf6uD/2ZjvlWwVTFG7ZgJM BWhZDqYlIr+IsZK4lhSK9L/nC6kCrpCG9kAttYirwJA== X-Gm-Gg: ASbGncv+rTLrXki2FdSO1HrwKP3oDCtcfDnkUbTSjDzLDaCfVe7e2rIXbvXTLtabajx Jvtwk3B2T9xFia98w3cjyz/cdhG/XDB2Cidd4ULQwOZmM4QHJzTpw0aUvEdG7EMMBp8LYLJEhT9 +Efymb6LW7EBCvXJ3DxEErexZgdPKSWtI26VUMyYpFQPMiSqnftM5JJSIEouUjMBndRQzlN9nR0 5IwRWUU5c5MJplSZVM6vjN4660KQoAvbOAJQSNLqbIzJqxavAqonaD7RCbkn+PNrjAtrIj2 X-Google-Smtp-Source: AGHT+IEs7t0mUxVKL4ab7rmK0bTLGpFG+ud6nTRlQUXG7km5g/QYSHjbBMxGTWObGL4WJw3xEOXZKd3QSypYZcv4Pm8= X-Received: by 2002:a05:6512:3b10:b0:57b:7c83:d33b with SMTP id 2adb3069b0e04-598853ebbe0mr2726714e87.47.1765230187811; Mon, 08 Dec 2025 13:43:07 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Jelte Fennema-Nio Date: Mon, 8 Dec 2025 22:42:56 +0100 X-Gm-Features: AQt7F2oNFcv-TpNnRbzZRvBGL9ICZqb_26xFWeGwAJNda6HChec9bATK90Nn6dQ Message-ID: Subject: Re: Proposal to allow setting cursor options on Portals To: Dave Cramer Cc: PostgreSQL Hackers , Jacob Champion Content-Type: text/plain; charset="UTF-8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Sun, 7 Dec 2025 at 15:38, Dave Cramer wrote: > My main driver here is to allow the creation of Holdable portals at the protocol level for drivers. Overall seems like a sensible feature to want. A somewhat random collection of thoughts: 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. 2. I think I like the idea of optional fields that a client can add to the existing messages. That way "implementing" the new protocol version is a no-op for clients. 3. I think we should mark optional fields more clearly in the docs somehow. e.g. Make the docs say Optional Int32 and explain what Optional means in the "Message Data Types" section. 4. I think the server should be strict that it only receives this optional field for the expected protocol version. 5. Do we really need to add the CURSOR_BINARY flag? Seems confusing with our other way of indicating binary support, i.e. what does it mean to say text as the format code but then specify CURSOR_BINARY. 6. What is the benefit of PQsendQueryPreparedWithCursorOptions? I understand the use case for PQsendBindWithCursorOptions, but not for PQsendQueryPreparedWithCursorOptions. 7. The server should check that no unknown flags are passed 8. Docs need to be added for the new libpq function(s) I have one question about your intended usage: I expect you intend to make using this opt-in for the users of pgjdbc? (i.e. by using some flag/different method to use this HOLD behaviour)