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 1wEqri-004Ttw-1f for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Apr 2026 15:48:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wEqrh-003hrJ-2i for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Apr 2026 15:48:49 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wEqrh-003hr6-1P for pgsql-hackers@lists.postgresql.org; Mon, 20 Apr 2026 15:48:49 +0000 Received: from mail-ot1-x32c.google.com ([2607:f8b0:4864:20::32c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wEqrf-000000029cg-0RbZ for pgsql-hackers@lists.postgresql.org; Mon, 20 Apr 2026 15:48:49 +0000 Received: by mail-ot1-x32c.google.com with SMTP id 46e09a7af769-7dbba5076c8so1757181a34.0 for ; Mon, 20 Apr 2026 08:48:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776700125; cv=none; d=google.com; s=arc-20240605; b=aVx1vSsgWHPhrCOVk/7gYRbKOqpfquCa9YsNtCuNQoSZbpQT4y8U1DZA8gHkXHdcij z0u/nFDsej8ErRXsc6R3h/IGZnTd94TFNPuqu6pgZnZ2hSN5PJ2w6qmrMX99UfXDwO0X IuSEuc0jweQL8qfLABRadEJOoMmY9O39PGgn3OP7rt7pRSAbzUGckc/7TIP1ayHYA3hU SZn2HvhqjpF3SQiahKzzRMu+20lgtQlmRrt/A6KgCeRlnv+MQAPR/4BsiYplofgD8Kx4 v8oLh11jgOFhkXVEAfmPpTmI4zkJT+FSZhdrtdxqUafmArJOhxRtWX0eWKXpu+S7Ogmy 1Xzg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=qkTDs/lMtT6lr8UkY4jVkABS3So92Eb7+HaiaNH5Ipk=; fh=7/jxgMRL339EJNOw0eykU+l5daes09b3/SGJrY2MGEQ=; b=gdh0BTSzUZKI4Jr12GYpd2vLNnlYxmyknrB+ltluj8IvEHW3lj+1NuMHBOloY5g4Y2 wH9wvbgBMzIZE8Z9WkfyqO4iC7GBdBIl7VWK1XOn7iTcYDzeApF11gTsLHgBfwn8QsKx gptLFfnejDL+aRywFEMYMp3f/B/9VFJyts2PthEbpPuLF0SNHH7w65S8m6KVYXcl+vzp E6Lirc9gOpRADUiAzQY2Q0hJOgDXO6nVV2WVcMjIQpFmF/QFwhy3WD1iRI5g0u9T7vwH yETtviMRFHsMPFAkAD6kKm8u3+JJWwj1nJIXrKIUiAeAf51g19VKBRKAodhpTlG2q0In O5yw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20251104.gappssmtp.com; s=20251104; t=1776700125; x=1777304925; darn=lists.postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=qkTDs/lMtT6lr8UkY4jVkABS3So92Eb7+HaiaNH5Ipk=; b=KnHJGWWoNYc7c+VDV/GvdWE3XmkxoxsWZGUi7Y3Ss2b1NmZqCOX+P6Orw58/E0yxo6 kxozK9O2BOYA2T4cDSgxqzQCtCD2JoOLeTunfc3esDAzlWzmk5gZvHiEGRU/uCXO9Aej erMV7hRSp6yYmBj5BGKub0DJE3r6fWwiNkZabeE4vYeOCP84weUfZo2+t3kdu1WSLAeV pTxl4lfPvkAyzzESUQPTvn+SqX8xsOH8tQTxPoBxxZnKyOh/WSNCnCl+HwRKdVVhmKGb B1JtpjVp2FGdo7rw5XTxcmlYLo5w3LaREWvKXIYwegkoEJbUMwrUPmTSXRiBWO6BvB2q plIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776700125; x=1777304925; h=content-transfer-encoding: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=qkTDs/lMtT6lr8UkY4jVkABS3So92Eb7+HaiaNH5Ipk=; b=djbzrZnNCROv+brohlB3eeM9iMEcQGzEoh5ueuOczH8rnEt0ec1Qh4yp/DZEP0f2zH M/XQi1ZqC7cDBjwMMMRKDMwNqVNHlANafYGfTJoSiUKk5siFqFk8qsuwSMP3tsVe31EI 5xIdHdl/NVgs/HDsko13VAdYiveZoJGoYGgFIju6jwJvGc6kJspEMWUhsLbgOarwsvUw wMQYpzmdMmtTigTVjoqAqRx39Z7dBrD8QxV798DMgqfNTSJvAJSkewMoFlX/LULHx2QB zRFYRXP1BIcSRdLaNXd379N+HiF0P+k/ctWqdqihUzis7kdFjjmLYq3DE9KiMxjLAkfM 43PA== X-Forwarded-Encrypted: i=1; AFNElJ91Twiud4HFKWJxU9RHMygYLmPEG9eOTBZLoNHWbPTs3I7BpiauTJ5KOxUMY2QrmKFnuKgLP9I0O6e0fYZ9@lists.postgresql.org X-Gm-Message-State: AOJu0YyoKzs/1wmNZDSD/0+OaE6OsLqLoz+z8Z7+1iyax3QhT4tIDjOv pHywP+jex6TMJJ25blK5cmn9Y/PJyCprI02fZvGXg0bOqd5dlzUtcfiEIrD4fSIdlsaVR7dbFTs ir/16gpMeeGPZE8B3ngGe7vfJO6SnsaroH3fSoKIWXg== X-Gm-Gg: AeBDies2Jt+pPjM3+VHn9Mu7CBUkfUh873yWr18Wrr8l1q01gLwL7UTeidUBnqgU8oT PAdTk33yym6F8oxQGYM9FeRXTmNCCdvoNEP34k0TXgr8h8eUUNG+cvldMHmxcGX721OT4ISwJTV xy7hJQnDVHbkuAbkHyWXS4yCI/SO+Vb6e4pjVijPeFqrCBltooQ8YQjs23AZs/JdVaEY5PWbe88 h/bbzG5oApLpb8AsfMurMFsoKAG7gk8p9k80auu9bcaxhJ014I4ZiLAK77nrAbiU/7aF4VN6DqJ ja385AaMIlUjeEU= X-Received: by 2002:a4a:ee87:0:b0:67d:e140:344a with SMTP id 006d021491bc7-69462f0ed74mr6659979eaf.40.1776700124809; Mon, 20 Apr 2026 08:48:44 -0700 (PDT) MIME-Version: 1.0 References: <85ac7f0e-d95f-4377-ade0-8941fd328012@eisentraut.org> <7d63ddfa-c735-4dfe-8c7a-4f1e2a621058@eisentraut.org> <4606deaa-7d65-4f22-8a78-356c3180be9d@eisentraut.org> <53f1c094-3c29-4ef6-a9bd-dc2e7894ceb0@eisentraut.org> <4126231.1776622202@sss.pgh.pa.us> <260137.1776695634@sss.pgh.pa.us> In-Reply-To: <260137.1776695634@sss.pgh.pa.us> From: Paul A Jungwirth Date: Mon, 20 Apr 2026 08:48:31 -0700 X-Gm-Features: AQROBzCji0ST4JgwXZFAWVGgfZuAjYFfVgyfA5NxhZriPlWeHPMJCC5QZkG3yHU Message-ID: Subject: Re: SQL:2011 Application Time Update & Delete To: Tom Lane Cc: Peter Eisentraut , Chao Li , PostgreSQL Hackers Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Mon, Apr 20, 2026 at 7:33=E2=80=AFAM Tom Lane wrote: > > > I was curious why execSRF.c uses `rsinfo.isDone !=3D ExprMultipleResult= ` > > for the finalize parameter, because I don't think a SRF should ever > > return ExprSingleResult, right? So I guess it is just to be cautious. > > Makes sense. I followed that approach. > > It's been awhile, but I think these specs were set with the intention > that if a plain function were somehow called as a SRF, it would act as > though it were a SRF returning one row. We haven't quite reached that > with this patch --- I think it'd be an infinite loop as > ExecForPortionOfLeftovers() stands. I'm content with the way things > are though, given that it should always be the case that special > privileges are needed to mark a function as being a > withoutPortionProcs function. > > But speaking of infinite loops, should this one contain a > CHECK_FOR_INTERRUPTS call? It's hard to conceive of a case where > the value would be broken down finely enough for that to be a > problem, but ... A rangetype could only loop 0-2 times; a multirange 0-1. So I don't think we need it. Eventually user-defined types could loop more, but a design that inserts many records every time you change something seems like a bad idea. Maybe I would add it anyway just out of caution, but I suspect it's excessive. Yours, --=20 Paul ~{:-) pj@illuminatedcomputing.com