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 1wF4YP-004icZ-2m for pgsql-hackers@arkaria.postgresql.org; Tue, 21 Apr 2026 06:25:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wF4YO-006lGh-2j for pgsql-hackers@arkaria.postgresql.org; Tue, 21 Apr 2026 06:25:48 +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 1wF4YO-006lGZ-1e for pgsql-hackers@lists.postgresql.org; Tue, 21 Apr 2026 06:25:48 +0000 Received: from mail-vk1-xa31.google.com ([2607:f8b0:4864:20::a31]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wF4YM-00000002Fnj-0DxP for pgsql-hackers@lists.postgresql.org; Tue, 21 Apr 2026 06:25:48 +0000 Received: by mail-vk1-xa31.google.com with SMTP id 71dfb90a1353d-56d95bc93e3so2368843e0c.1 for ; Mon, 20 Apr 2026 23:25:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776752744; cv=none; d=google.com; s=arc-20240605; b=iI738fFwYBa7fxuHnA1c5FxRkO21KJDmmaLaGY77/2m6G3LtQhBxX07PBiwNdjUqti ZK24RArxy0ORGPtwTxvnMAX58V4ms5MMi9QBkSMkECOcCGH+EwD788xLKLWNZsQyjvF6 FhFrA55bfqJxsOdfXqldoXBtHuiNBXaRP0sQPDWHt5FIWW85S4e4zkr7Uwe+Wwb/fbNv bxNKxzVPEUwg2jAIJOqi1f3SDy8S+d0O5h52/0bR/1JXDkTd9UXULt325jfhNuHthLiJ 4Wg0iIYwJ9TayDp3z9jrdwKUqtMxRgzpodfZ2BlNKtcXY+WlufTIVVCdSYsmyavBPJYr 3Qdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=IFkyxJfA/ae4EQ3LiJ7iCT5ZeKwToNEIgSgsAANazEA=; fh=V2lG5RkyW4v6vp5CudpTH4ny2MZ/tiz8SA9SeM2qKpQ=; b=M8x2mkLPHDoPeXjp3suUeDVy1bY8BdqrcR2EJ7GzFwBNTU8ongMNjXTp1cNM2X2xUx qw9Y9iH18QXLNViSwq3s59uvdcFT0I8NtwhSs9FPoExS2FhT3MBwMp8ii3x7KivbdvJ9 XEuEca4b8sRCouHh4iTnSqr67WhoOKCjy44ZxFinDdxahIU0svC+nRTSR6oLR0iHYFcF ++oiG+dmCvzsb0RaVNSNdd2MutL+uPGzpW7Qh92MgEJuAQKJWav2PT+FKlkTURFQzEV+ 2Cprpd6Ytt/3+W03ZVEezQD0vUafZ5rdae6wL5L0AUIAVrQ/5XazmyDYcU/B4SMqI54x Nesg==; 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=gmail.com; s=20251104; t=1776752744; x=1777357544; 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=IFkyxJfA/ae4EQ3LiJ7iCT5ZeKwToNEIgSgsAANazEA=; b=m4k0Pt9s8fupVP/AYwfeIuhRIFJL3wIbWk3ZRO7VDk4XAaYQjIEBOPQKH7GeTXGESj Y1M6L23A4aNQv8sOBPCuxL0J1bj0F6LLikwJ2Ix/OxaH8p6UmSGWPD8vreKiBFPFXpMC k2B9PCOftqbMNrznKL8/CL5kIy22Xq7jJjG42s2USR7r+yZ6jyrt0+g2ktqBxDi4peYo 13bHkfya9Ln8+ExrTFW6w+3pbNPU6BD54AOMUQZSEeJR4fZLynWtdDF+qwn/maEiicY4 SuBcwDdw+mr4Ut2HGTdNbvEggH/WDIiYvLtQX8x3LN4+XhX8u3xqEYp5by7jcNNYwXWV Wc9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776752744; x=1777357544; 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=IFkyxJfA/ae4EQ3LiJ7iCT5ZeKwToNEIgSgsAANazEA=; b=IKENuHd6EUPZ0RRif7PRXojP3mMzBFSWTAK9pIN422p3rQ7LyLTBYpbKbhYg9Jxgwq j/43QP2jytHAnOHIqCVRT3TUsMKvYDv0JFPAqSw+LnXi5TMxA8VtW8D3fmSlVTD6iMWZ zwT+SvrVEZjOwD/PVKoJvNvu5oyx0YJxAgsjM6U4yl6NBY8KY15wQdycrcDzWr0VsC0m 1Qrtl0Axj834ZnDOmkkmBLjUWjMtejFpiVR4NSEN4pEvzzyRUZdRbSPAyGFU+S0Dv2iQ v+teXpJlhGlsdj34deZILSFmLl7QBs3QuG5M9pxPtG/vrxehZrdB4/KLwOdWboerdCH8 GQiQ== X-Forwarded-Encrypted: i=1; AFNElJ/b4p4OUKpNb8h7TtmtOfdrxsI9rKWqPRq304c+P+hWFI7fuk8uRIWBwgi2THL3rO37lgK19pkVsgUGmlOr@lists.postgresql.org X-Gm-Message-State: AOJu0YzEQf5Zv7fI0DneeIXjC/iUI2DKCEl1a64pjbGNYQcgpbBWt32k fWQOaOoJPkNfWzm7lpG+LA2zl4ODcQjGLFH/PfRqh0YXNi6fJDlQFBw0YsAM6oOdxXijl1sf1Eg kr59kWQInj4FbX7EcRWeXIz7BpeV/OME= X-Gm-Gg: AeBDiesA+g6YP03YiZPF4Olt7mfwdTTK6o40LgX4CZZ8gCZzCoMUVe9makbBXA0PYVV fqj1ZExMntUJLtKqIJloOwOcNoVAjp9zRZFYNJ4MZfdXJAaWr7hwZT+U/Dwiqz1yNdqDee3bnl3 lUzlUG3qU1ixx7+Rz3uJgBjBNszOo7G/3GQmx6vgyj9tgoqZpEZrY7IBDInfKT/PPh2zSrCveYz y6kvsRj3fW1jI+Ct3jhHZ71VozGaPJd3dW/cJx5HoT0iq/hUkftv382gZiCRwEozB8U4MLa0/Xb UdAa9kjN+CJzNcVe2tgEROmAn0G/TBGvo/0dJNPwHXiZY3wFwv46V7ntKgl5kY1V2pbSqAqS7jN /YZ9/52oKtkeWuMPymyZLHtoxSzrBrZalRpW/nB1TZRj01dLKy5hUTBPx/7U3mcOzbv4ks9nJEb gLVzzR+4DOpQFz98340NbhNDGJeKRn3T4S5xsIS3kNrik= X-Received: by 2002:a05:6102:809c:b0:5ff:cb2c:a04c with SMTP id ada2fe7eead31-616f45352b2mr7595206137.1.1776752743990; Mon, 20 Apr 2026 23:25:43 -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> In-Reply-To: From: jian he Date: Tue, 21 Apr 2026 14:25:06 +0800 X-Gm-Features: AQROBzCisBgk2oP6-0qQ6vPI-gHvhYj3xdD8j221J2_kcl5C_1Hm-X8bIF-FLmA Message-ID: Subject: Re: SQL:2011 Application Time Update & Delete To: Paul A Jungwirth Cc: SATYANARAYANA NARLAPURAM , Peter Eisentraut , Chao Li , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000028fc7b064ff27c3e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000028fc7b064ff27c3e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Apr 16, 2026 at 7:26=E2=80=AFAM Paul A Jungwirth wrote: > > I think using INSTEAD OF triggers to replace an UPDATE/DELETE FOR > PORTION OF is a valid use-case, but it doesn't make sense to insert > temporal leftovers. As you say, we can't access the underlying > storage. But also we don't know what changes the trigger actually > made. The trigger should be responsible for leftovers, and we > shouldn't try to add more. So I think the fix is just to skip > inserting leftovers. I've attached a patch to do that. > hi. CREATE TABLE fpo_instead_base (id int, valid_at daterange, val int); INSERT INTO fpo_instead_base VALUES (1, '[2024-01-01,2024-12-31)', 100); CREATE VIEW fpo_instead_view AS SELECT * FROM fpo_instead_base; CREATE FUNCTION fpo_instead_trig_fn() RETURNS trigger LANGUAGE plpgsql AS $= $ BEGIN RETURN NEW; END; $$; CREATE TRIGGER fpo_instead_trig INSTEAD OF UPDATE ON fpo_instead_view FOR EACH ROW EXECUTE FUNCTION fpo_instead_trig_fn(); UPDATE fpo_instead_view FOR PORTION OF valid_at FROM '2024-04-01' TO '2024-08-01' SET val =3D 999 WHERE id =3D 1 RETURNING *; id | valid_at | val ----+-------------------------+----- 1 | [2024-01-01,2024-12-31) | 999 (1 row) Should I expect the column `valid_at` value as [2024-04-01,2024-08-01) ? We should also document this on doc/src/sgml/ref/update.sgml Attached is a minor regession test enhancement for "v2-0001-Fix-INSTEAD-OF-triggers-with-DELETE-UPDATE-FOR-PO.patch". -- jian https://www.enterprisedb.com/ --00000000000028fc7b064ff27c3e Content-Type: application/octet-stream; name="v3-0001-misc-fix-for-V2-Fix-INSTEAD-OF-triggers-with-DELETE-UPDATE-FOR.no-cfbot" Content-Disposition: attachment; filename="v3-0001-misc-fix-for-V2-Fix-INSTEAD-OF-triggers-with-DELETE-UPDATE-FOR.no-cfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo88o0pi0 RnJvbSBkMmMzNjdmOTVjOWYzNzU4YjMxZTE0YzEyM2JkODZlZGZiMDNmYzdlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjEgQXByIDIwMjYgMTQ6MjE6MDEgKzA4MDAKU3ViamVjdDogW1BBVENIIHYz IDEvMV0gbWlzYyBmaXggZm9yCiBWMi1GaXgtSU5TVEVBRC1PRi10cmlnZ2Vycy13aXRoLURFTEVU RS1VUERBVEUtRk9SLVBPUlRJT04tT0YKCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20v Q0FIZyUyQlFEZDc0Zm5kNG9iQ1JNcVZTMEFWV2YlM0RjU0ZIJTNEQ3Y3dHJUSldnbSUyQl9iaFRL NnclNDBtYWlsLmdtYWlsLmNvbQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBK3Jl bnlXOW89LURCSzZZTzdhMzF4YnI2eHc3UkZOX3RTeFRpVWkydFNPUTJ3NV96UUBtYWlsLmdtYWls LmNvbQotLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0IHwg MTYgKysrKysrKysrKysrKy0tLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yu c3FsICAgICAgfCAxNCArKysrKysrKysrKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRp b25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3Jf cG9ydGlvbl9vZi5vdXQKaW5kZXggMWFmYTI2Yzg2YmMuLjQ3NzE5ZmM0MGVhIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dApAQCAtMjEwMywxNSArMjEw MywyNCBAQCBJTlNFUlQgSU5UTyBmcG9faW5zdGVhZF9iYXNlIFZBTFVFUyAoMSwgJ1syMDI0LTAx LTAxLDIwMjQtMTItMzEpJywgMTAwKTsKIENSRUFURSBWSUVXIGZwb19pbnN0ZWFkX3ZpZXcgQVMg U0VMRUNUICogRlJPTSBmcG9faW5zdGVhZF9iYXNlOwogQ1JFQVRFIEZVTkNUSU9OIGZwb19pbnN0 ZWFkX3RyaWdfZm4oKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAogQkVH SU4KKyAgICAgIGlmIFRHX09QID0gJ1VQREFURScgdGhlbgorICAgICAgICAgIHJhaXNlIE5PVElD RSAnVVBEQVRFIE9MRDogJSwgTkVXOiAlJywgT0xELCBORVc7CisgICAgICAgICAgUkVUVVJOIE5F VzsKKyAgICAgIGVsc2lmIFRHX09QID0gJ0lOU0VSVCcgdGhlbgorICAgICAgICAgIHJhaXNlIE5P VElDRSAnSU5TRVJUIE5FVzogJScsIE5FVzsKKyAgICAgICAgICBSRVRVUk4gTkVXOworICAgICAg ZWxzaWYgVEdfT1AgPSAnREVMRVRFJyB0aGVuCisgICAgICAgICAgcmFpc2UgTk9USUNFICdERUxF VEU6IE9MRDogJScsIE9MRDsKKyAgICAgICAgICBSRVRVUk4gT0xEOworICAgICAgZW5kIGlmOwog ICAgIFJFVFVSTiBORVc7CiBFTkQ7CiAkJDsKLUNSRUFURSBUUklHR0VSIGZwb19pbnN0ZWFkX3Ry aWcgSU5TVEVBRCBPRiBVUERBVEUgT04gZnBvX2luc3RlYWRfdmlldwotICBGT1IgRUFDSCBST1cg RVhFQ1VURSBGVU5DVElPTiBmcG9faW5zdGVhZF90cmlnX2ZuKCk7Ci1DUkVBVEUgVFJJR0dFUiBm cG9faW5zdGVhZF9kZWxfdHJpZyBJTlNURUFEIE9GIERFTEVURSBPTiBmcG9faW5zdGVhZF92aWV3 CitDUkVBVEUgVFJJR0dFUiBmcG9faW5zdGVhZF90cmlnIElOU1RFQUQgT0YgVVBEQVRFIE9SIERF TEVURSBPTiBmcG9faW5zdGVhZF92aWV3CiAgIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9O IGZwb19pbnN0ZWFkX3RyaWdfZm4oKTsKIFVQREFURSBmcG9faW5zdGVhZF92aWV3IEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjQtMDQtMDEnIFRPICcyMDI0LTA4LTAxJwogICAgIFNF VCB2YWwgPSA5OTkgV0hFUkUgaWQgPSAxOworTk9USUNFOiAgVVBEQVRFIE9MRDogKDEsIlsyMDI0 LTAxLTAxLDIwMjQtMTItMzEpIiwxMDApLCBORVc6ICgxLCJbMjAyNC0wMS0wMSwyMDI0LTEyLTMx KSIsOTk5KQogU0VMRUNUICogRlJPTSBmcG9faW5zdGVhZF92aWV3OwogIGlkIHwgICAgICAgIHZh bGlkX2F0ICAgICAgICAgfCB2YWwgCiAtLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0KQEAgLTIxMjAsNiArMjEyOSw3IEBAIFNFTEVDVCAqIEZST00gZnBvX2luc3RlYWRfdmlldzsK IAogREVMRVRFIEZST00gZnBvX2luc3RlYWRfdmlldyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDI0LTA0LTAxJyBUTyAnMjAyNC0wOC0wMScKICAgICBXSEVSRSBpZCA9IDE7CitOT1RJ Q0U6ICBERUxFVEU6IE9MRDogKDEsIlsyMDI0LTAxLTAxLDIwMjQtMTItMzEpIiwxMDApCiBTRUxF Q1QgKiBGUk9NIGZwb19pbnN0ZWFkX3ZpZXc7CiAgaWQgfCAgICAgICAgdmFsaWRfYXQgICAgICAg ICB8IHZhbCAKIC0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsCmluZGV4IDBiNWE4NjQwOGI5Li44MzA4MmY4NzM5 YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNxbApAQCAtMTM3MSwxMiAr MTM3MSwyMCBAQCBJTlNFUlQgSU5UTyBmcG9faW5zdGVhZF9iYXNlIFZBTFVFUyAoMSwgJ1syMDI0 LTAxLTAxLDIwMjQtMTItMzEpJywgMTAwKTsKIENSRUFURSBWSUVXIGZwb19pbnN0ZWFkX3ZpZXcg QVMgU0VMRUNUICogRlJPTSBmcG9faW5zdGVhZF9iYXNlOwogQ1JFQVRFIEZVTkNUSU9OIGZwb19p bnN0ZWFkX3RyaWdfZm4oKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAog QkVHSU4KKyAgICAgIGlmIFRHX09QID0gJ1VQREFURScgdGhlbgorICAgICAgICAgIHJhaXNlIE5P VElDRSAnVVBEQVRFIE9MRDogJSwgTkVXOiAlJywgT0xELCBORVc7CisgICAgICAgICAgUkVUVVJO IE5FVzsKKyAgICAgIGVsc2lmIFRHX09QID0gJ0lOU0VSVCcgdGhlbgorICAgICAgICAgIHJhaXNl IE5PVElDRSAnSU5TRVJUIE5FVzogJScsIE5FVzsKKyAgICAgICAgICBSRVRVUk4gTkVXOworICAg ICAgZWxzaWYgVEdfT1AgPSAnREVMRVRFJyB0aGVuCisgICAgICAgICAgcmFpc2UgTk9USUNFICdE RUxFVEU6IE9MRDogJScsIE9MRDsKKyAgICAgICAgICBSRVRVUk4gT0xEOworICAgICAgZW5kIGlm OwogICAgIFJFVFVSTiBORVc7CiBFTkQ7CiAkJDsKLUNSRUFURSBUUklHR0VSIGZwb19pbnN0ZWFk X3RyaWcgSU5TVEVBRCBPRiBVUERBVEUgT04gZnBvX2luc3RlYWRfdmlldwotICBGT1IgRUFDSCBS T1cgRVhFQ1VURSBGVU5DVElPTiBmcG9faW5zdGVhZF90cmlnX2ZuKCk7Ci1DUkVBVEUgVFJJR0dF UiBmcG9faW5zdGVhZF9kZWxfdHJpZyBJTlNURUFEIE9GIERFTEVURSBPTiBmcG9faW5zdGVhZF92 aWV3CitDUkVBVEUgVFJJR0dFUiBmcG9faW5zdGVhZF90cmlnIElOU1RFQUQgT0YgVVBEQVRFIE9S IERFTEVURSBPTiBmcG9faW5zdGVhZF92aWV3CiAgIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNU SU9OIGZwb19pbnN0ZWFkX3RyaWdfZm4oKTsKIAogVVBEQVRFIGZwb19pbnN0ZWFkX3ZpZXcgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyNC0wNC0wMScgVE8gJzIwMjQtMDgtMDEnCi0t IAoyLjM0LjEKCg== --00000000000028fc7b064ff27c3e--