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 1wA7UB-002516-0f for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Apr 2026 14:32:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wA7U9-000jvO-2E for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Apr 2026 14:32:58 +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 1wA7U9-000jvG-1D for pgsql-hackers@lists.postgresql.org; Tue, 07 Apr 2026 14:32:57 +0000 Received: from mail-ej1-x62f.google.com ([2a00:1450:4864:20::62f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wA7U7-000000017oo-1C4L for pgsql-hackers@lists.postgresql.org; Tue, 07 Apr 2026 14:32:57 +0000 Received: by mail-ej1-x62f.google.com with SMTP id a640c23a62f3a-b9c01854477so842414966b.0 for ; Tue, 07 Apr 2026 07:32:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775572375; cv=none; d=google.com; s=arc-20240605; b=bqci0zMGP0kfpuuc5OgNXGDjFfJ1dnz/pqIbmW32S9zWOQ6ftmGl4dB3Ql1yd1rAkU q0HT4x4bWbBY1Wxahxs+XHAGnv6ekNEBaCdyKqBI9NARvVDx9IXrMIWW4z2pYUgnr8Wm fYt3tTnUp2OwDUzagU4Ft0hlOFsFqQ6hAn7O2rawpmZ2AmKzBo3JAOb5GEVpajgL+NHo hFj5qKVxoUpzQvfuxVGlccTrrQNw41Bf1VjacfgXWvYtZzjBLmAh4mZEM4Z9WVv/r6aM 4xP93X2IJ+QyVXRYsEvvs16Lp8N27CKwMZfEKVcxzodUIDlw34Il8hxvkgd+7wTm9lKm 3+tg== 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=bjCPppSycFWMCMT7O2xngXak2wVWSB+/wClsQtTzKmE=; fh=6f2i0kc4hHUF0ty3mXQcfVzOxDSr47j0i5sDOPRDJG8=; b=hj79UXDUBO5mLerMIVftoDaM2q+b6jHwAyJY7olekAXbvBYZNuyWtluIIN+6+OI1kK VavSd0nvnCpKJF+lriMF2YIpq6lcjrEwpEoFlZ9Lcac3pKQz4l4DAz/0DfkNloPSC0BU rCHF0tF1AX+RwSdKsmJSnx1Rr/MqFRHCRlljczk8qmFdwMcQPJYnGNZL53pCv90FqbWK ByYZxKcccZZeP55/4mg012S+kdA6SEFtar87ilX2MUVMUbcsRzYXOTeTWh977Ot+KnB8 s2YIJ0dVuQS3wgAPM71JZ/XEls7NQjrA96NgbYFa6uwxkpMiJ3pEV/ekECVicSm3zpfr aiFw==; 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=1775572375; x=1776177175; 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=bjCPppSycFWMCMT7O2xngXak2wVWSB+/wClsQtTzKmE=; b=HDsMJlEgYyJ075DHOdBtNBeTbTlfbCbhIiu9CV3y6QRdWA6XiUggOjzrE4SpTHs2Bo LcgE3PJjIM4RYbN5sRijgSA/J/mNnhnCUyzvCotf/ES9e+kQ51q1eeg/GAHaESVLfHl4 Q3HeVXFkFsB9y+b9n71fdc3FR3Z1dd1MIs2agNeWiNn9+yZmcIwMqEq+Rn0Q2ZUEzqSA TpxAnbZmlKrjRbllulsXqtIx/fZ2imOLWJbpZSQ1qGrr+LjRk8l9ODOOQpaKYzKq88pU VbcfEd5lH1IqlZUsxl3wZAcBE1JLRukSlZPiz8K83rnEgDTwVuPaNo79xmM4yiGXGe15 vHMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775572375; x=1776177175; 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=bjCPppSycFWMCMT7O2xngXak2wVWSB+/wClsQtTzKmE=; b=mpY5SWTwgW6NN1oyEmQFQLSqmooaMNA+68JlPqQiDMsEX9hgm006iXD8VE0fyfrbe2 N91YzPrC/v383XUCFL75FV/fviMzE6K+TYzEcv+TJPbGbupRjiVHq3HpHZl9MCxva750 PAmfVN7nZfdECa+/T4l4q7/XEO0o44AMitzAZtKggle3AM2gs3IAC763ZQY9YjUDSFl5 vS9Ej3mlH+xgvad5t9t+r6BIjXw+sSu33yV3xiDtiu683E4lAWg7DsWM0JLBNHSKGVW/ 2VoJ8Q9hABrsfSvMxa9AbS8DxssrybW/YclNi5HIwwEH+J+gtgWOaz73B8QTtQ3+EK0l mKuQ== X-Forwarded-Encrypted: i=1; AJvYcCUde2k+j3EUdPZarQic1Z4hjMOKW9AJ2VYG/gLHkNCaVm8vx6fIW38Bj6tZxlDDjqZQn2AKRS2hs5t3O6VY@lists.postgresql.org X-Gm-Message-State: AOJu0YxBeIqmjW6npXMpXnP0q4U2kpw7SO9OEVVtOMcPdDajAVSE+tJD kWP6gJJ2/wyQwYnqg4wTRAaci6IZAc53PMAYKH/Gsh6/ElvY2qQ7fkIetMc9rmFHH5kiRjRq308 Wx35aRSLUa/aCq3Iw+7MWn/oBgu4U4ws= X-Gm-Gg: AeBDietbGOZOe7K25iqN2chpQlAeN0AIqUJUGuPS+B1Zf/Sa1+jv6r5AM136DJqVown Am2cOYdiNl9Hc0u3+8CVcAtvByxsTk3yzHYPzT1pg7U8O4Q6PudBN8WEiWhPr+AcZdZRfLnAUUS Axn9kv5K0LRp/1u1A2Zv3t4r9dVrVamU1bEYT0Euuh9vXr/QUNPzas4B/LFmhrRWPw61tXiWN59 xCVf6ZFHSo6hmscaQNvi66yopRnMTC6igbw7gQ1RQ0FupYoVbbQ/uerkR9oAUe06OOS4D4iBggj cESO8ig= X-Received: by 2002:a17:907:784:b0:b97:860c:de51 with SMTP id a640c23a62f3a-b9c679e215fmr747787766b.43.1775572374044; Tue, 07 Apr 2026 07:32:54 -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: SATYANARAYANA NARLAPURAM Date: Tue, 7 Apr 2026 07:32:40 -0700 X-Gm-Features: AQROBzD9we7ZZhXqBaHDgxISo6C4Nb825SBn-jSnbHZwj47EEajbLpMSMXqvnBQ Message-ID: Subject: Re: SQL:2011 Application Time Update & Delete To: Peter Eisentraut Cc: Paul A Jungwirth , Chao Li , PostgreSQL Hackers Content-Type: multipart/alternative; boundary="000000000000a0d268064edfa85f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a0d268064edfa85f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Peter, Paul, Please see a few bug reports related to this at [1], [2], [3]. Additionally, it appears there is another issue here: A BEFORE UPDATE trigger that modifies the range column creates overlapping rows. The trigger widening the range doesn't affect leftover computation, which uses the original FPO bounds. Result: updated row overlaps both leftovers. SET datestyle TO ISO, YMD; CREATE TABLE fpo_trigger_overlap ( id int, valid_at daterange, val text ); -- BEFORE UPDATE trigger that resets the range to the full year CREATE FUNCTION widen_range() RETURNS trigger AS $$ BEGIN NEW.valid_at :=3D daterange('2024-01-01', '2025-01-01'); RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER trg_widen BEFORE UPDATE ON fpo_trigger_overlap FOR EACH ROW EXECUTE FUNCTION widen_range(); INSERT INTO fpo_trigger_overlap VALUES (1, '[2024-01-01, 2025-01-01)', 'original'); UPDATE fpo_trigger_overlap FOR PORTION OF valid_at FROM '2024-04-01' TO '2024-09-01' SET val =3D 'modified'; -- Detect overlaps (should be 0 rows for correct behavior): SELECT a.valid_at AS range_a, a.val AS val_a, b.valid_at AS range_b, b.val AS val_b FROM fpo_trigger_overlap a, fpo_trigger_overlap b WHERE a.ctid < b.ctid AND a.valid_at && b.valid_at; -- cleanup DROP TABLE fpo_trigger_overlap; DROP FUNCTION widen_range(); [1] https://www.postgresql.org/message-id/CAHg%2BQDcd%3Dt69gLf9yQexO07EJ2mx0Z70= NFHo6h94X1EDA%3DhM0g%40mail.gmail.com [2] https://www.postgresql.org/message-id/CAHg%2BQDcsXsUVaZ%2BJwM02yDRQEi%3DcL_= rTH_ROLDYgOx004sQu7A%40mail.gmail.com [3] https://www.postgresql.org/message-id/CANE55rCqcse_pwXBMWhbj3_7XROb8Dks6%3D= OLFmKy3bO3zDsCsg%40mail.gmail.com Thanks, Satya On Tue, Apr 7, 2026 at 4:53=E2=80=AFAM Peter Eisentraut wrote: > On 27.03.26 22:38, Paul A Jungwirth wrote: > >> Other than all that, this patch set (0001 through 0003) seems good to > me. > > Thanks! These v70 patches are rebased onto f39cb8c011. > > I have committed the patches 0001 through 0003. (I did some editing on > the documentation.) I think this is about as far as we can go for this > release. > > Please check the follow-up bug report(?) posted in this thread. > > > > --000000000000a0d268064edfa85f Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Peter, Paul,

Please see a few bug re= ports=C2=A0related to this at [1], [2], [3]. Additionally, it appears there= is another issue here:

=C2=A0A BEFORE UPDATE trig= ger that modifies the range column creates overlapping rows. The trigger wi= dening the range doesn't affect leftover computation, which uses the or= iginal FPO bounds. Result: updated row overlaps both leftovers.
<= br>
SET datestyle TO ISO, YMD;

CREATE TABLE fpo_trigger_ov= erlap (
=C2=A0 =C2=A0 id int,
=C2=A0 =C2=A0 valid_at daterange,
= =C2=A0 =C2=A0 val text
);

-- BEFORE UPDATE trigger that resets th= e range to the full year
CREATE FUNCTION widen_range() RETURNS trigger A= S $$
BEGIN
=C2=A0 =C2=A0 NEW.valid_at :=3D daterange('2024-01-01&= #39;, '2025-01-01');
=C2=A0 =C2=A0 RETURN NEW;
END;
$$ LAN= GUAGE plpgsql;

CREATE TRIGGER trg_widen BEFORE UPDATE ON fpo_trigger= _overlap
=C2=A0 =C2=A0 FOR EACH ROW EXECUTE FUNCTION widen_range();
<= br>INSERT INTO fpo_trigger_overlap
=C2=A0 =C2=A0 VALUES (1, '[2024-0= 1-01, 2025-01-01)', 'original');

UPDATE fpo_trigger_over= lap
=C2=A0 =C2=A0 FOR PORTION OF valid_at FROM '2024-04-01' TO &= #39;2024-09-01'
=C2=A0 =C2=A0 SET val =3D 'modified';

-- Detect overlaps (should be 0 rows for correct behavior):
SELECT = a.valid_at AS range_a, a.val AS val_a,
=C2=A0 =C2=A0 =C2=A0 =C2=A0b.vali= d_at AS range_b, b.val AS val_b
FROM fpo_trigger_overlap a, fpo_trigger_= overlap b
WHERE a.ctid < b.ctid AND a.valid_at && b.valid_at;=

-- cleanup
DROP TABLE fpo_trigger_overlap;
DROP FUNCTION wide= n_range();



Thanks,
Satya

On Tue, Apr 7, 2026 at 4:53=E2=80=AFAM Peter Eisentraut <peter@eisentraut.org> wrote:
On 27.03.26 22:38, Pau= l A Jungwirth wrote:
>> Other than all that, this patch set (0001 through 0003) seems good= to me.
> Thanks! These v70 patches are rebased onto f39cb8c011.

I have committed the patches 0001 through 0003.=C2=A0 (I did some editing o= n
the documentation.)=C2=A0 I think this is about as far as we can go for thi= s
release.

Please check the follow-up bug report(?) posted in this thread.



--000000000000a0d268064edfa85f--