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 1wAvA2-000ZRf-2I for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Apr 2026 19:35:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wAvA1-007YKQ-0B for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Apr 2026 19:35:29 +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 1wAvA0-007YKF-2S for pgsql-hackers@lists.postgresql.org; Thu, 09 Apr 2026 19:35:29 +0000 Received: from mail-vk1-xa2b.google.com ([2607:f8b0:4864:20::a2b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wAv9z-00000000Eab-2xNV for pgsql-hackers@lists.postgresql.org; Thu, 09 Apr 2026 19:35:29 +0000 Received: by mail-vk1-xa2b.google.com with SMTP id 71dfb90a1353d-56d93355337so837180e0c.0 for ; Thu, 09 Apr 2026 12:35:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775763325; cv=none; d=google.com; s=arc-20240605; b=YKeXUb0hycwLAWXJqy+Lam2FraSVmlBPA0622HzpEQYaaTM8zq0fmGHjpOCZ1/zQVz +TeNc4uGoqRqWXNfOmJGZztxwvIXR9QODXJgau5VJzL/qtqR8MWMjtl8o4wrg00iaASy viI5DOuuFmcA2pWMDp+JrPSDG3qbBhsXn48OKIYnBjRdDM/gDtgEZK7JkDDL4Z+pzgQ3 Ld4JAQgxpvMpKAmnHf6a0M54Ah4eNuQQ3Q7JEmLZwb/3g7eNAqjfOKWld5Wt1C4XyvK4 qJq7oWC+xvyXPXMYuAf6Y0ssRw8krK4RVO8JbUuUrQnlrP/na9PP13wkJUdkLB3yPCQS FMOg== 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=BConVIaoXi8eq9PR1F2JHAI8u54HADPgehoHwbZ8Y5o=; fh=6LUmIFVeZomQaLchu/8JHbNtv4oU/exAvi/oZv4A5DI=; b=Cr3wk9jXpfezwTFV1XscOVb1IDe5Ms+Uy2V+B8B/PPY/+5XS3We1jSlRnz3mHDQu9l jZtM7HIg2xByfizuDFluuw0FHYwAfQzPTwnR5DdqWERiEpD/s9eg7UvhX7yPkizNrej8 d2qvGK9hFaTe+NHshDzawKLOGoaigV99yZZEFcvozr6wNTZla50NSivyFMd3XVcdVauN so4glG39OyNPhEp5/vd4pb1cYgHoaMs97dcNbg7a/DoRivASBfMchevBNGiOMLRykOGx y8reZkUQF/ByczSUn33Sly3WLAdkBwkWQMcXG8aJSZ2ozzYDX0dgjBc/yaoBMxZRh+bF WSbw==; 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=1775763325; x=1776368125; 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=BConVIaoXi8eq9PR1F2JHAI8u54HADPgehoHwbZ8Y5o=; b=A18k4VSEs96GMY2fFmUvHm8PgQr0yHSwsvgJUYJZC/Y/x/86y7XWCDDe5GDUitSUPP l59mI3VY6StNeef2rV8M4aFFsPhq8p/Ede4582swXSLnDRrNXITZj2W4ZqPRxsFvSgsL jm0FIG/wjU+z/0RzQWmLLUAQgykPUbRcv/fXVzlNrIC852v/zQb+0wTbi/quXzw+6DeE SesPVpczrAN16+iRqtl62umuLwXSsTyC2PNCdOsHcClnRU0F1SQqma5dUSKluDC0eY6N sMEE/wybDzEBCxGzNRF/fsFb/vYfM6VQY6oV7mP/f4scYLvD5nRo3Rz/MX13diJr49ar gN1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775763325; x=1776368125; 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=BConVIaoXi8eq9PR1F2JHAI8u54HADPgehoHwbZ8Y5o=; b=C4rQaGuuEBIAWlH1wRsJAeO8F6K7ZAG331sXU8TvZLkrnXiEYMMQjiZH9oA4ek0n2L vOHzGrbTeHmjK2vw3ZUOjRWgJ+GOw/Tp2LezlB7vE6NL0nz6fGd74uoPPnCH21uXiQzQ S09PPKfHn6bxZbrhMC2l1Uk+1cYfmqFtgIrzD6pVspz4C/13CuM8GsJnCCFyM5WXSJmC obAlvX0h+DfRIa7WvMLpZNwHAR+dZmYMhqKJ8FC0Ym+cK/Bl18d/tMhl/iDumsG+ZYDt b9Jr+V/z6ThLO99j1kqTJTMZJG8ieUyK+wYrnjfbKs3TxBW7ekGWAfJJuC6qC9E0w9YL sS+Q== X-Forwarded-Encrypted: i=1; AJvYcCWRS1l4Y399JbQQvAMjaCHDDGAEEi835R0pJIZ/bVEg7GHlJpOGKNoIceBWnxY0LwgojDLbFT+INl9WL9fi@lists.postgresql.org X-Gm-Message-State: AOJu0Yxjh/mRPCux0YAgOxy45WijEfQYbRnO3MExTeF62bbq+Vj5soCM 3RtnP4SxqVyybvtR3sMO3bmaPrFsZ2nGjAVzl9qjudK6sNxpg9HVRL7gHbLl2+JHEA98HSbNTV0 CYieM4B3fsJUbXmbHBMC4v6p78hKbK74= X-Gm-Gg: AeBDietIV9Q1lRZmvGBYPFebKG+Z8b62l7CuIQIdxrsAUg8f5cMHTTZBKN7wgqqQmKJ lk2W9qaDU/okfAMnrFyReK/ZWhha5E8ULZx0KdARhFB+G940XDr2CjzfDqzG/fd/2AP6vzulujd Zu0n2RE61Q2iXuB1W0qzMgDejRxN32Yer5MUq3vs9SO6r0Jc9iofct81kDiOHsHQvYUagHXDMQ9 Bl9ncgB1cPA7UqPmypgRKLtL4bimruwJ6RmcgoWR67+PY/MV3o0LRmXGdWcGuzi0bEgoWBxfZNX teVrPFl1CNicbRymZ5466NeA6TZ0eOI5evGU X-Received: by 2002:a05:6102:3587:b0:5f7:2568:abb2 with SMTP id ada2fe7eead31-609fe5875e8mr150155137.6.1775763324741; Thu, 09 Apr 2026 12:35:24 -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: Thu, 9 Apr 2026 12:35:13 -0700 X-Gm-Features: AQROBzA-1SBbKhqTqNqhZ3y-wkVv2s0VdomSHmR4loZ_xm1s0XZAoNYFBIKu4lA 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="0000000000002d2d74064f0c1e8c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002d2d74064f0c1e8c Content-Type: text/plain; charset="UTF-8" Hi Paul, Peter, I found a Server crash when using UPDATE ... FOR PORTION OF or DELETE ... FOR PORTION OF on a view that has INSTEAD OF triggers. Repro: CREATE TABLE t (id INT, valid_at daterange, val INT); INSERT INTO t VALUES (1, '[2026-01-01,2026-12-31)', 100); CREATE VIEW v AS SELECT * FROM t; CREATE FUNCTION v_trig() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN UPDATE t SET val = NEW.val WHERE id = OLD.id; RETURN NEW; END; $$; CREATE TRIGGER trg INSTEAD OF UPDATE ON v FOR EACH ROW EXECUTE FUNCTION v_trig(); -- This crashes the server: UPDATE v FOR PORTION OF valid_at FROM '2026-04-01' TO '2026-08-01' SET val = 999 WHERE id = 1; I am thinking we should just reject this case. Attached a draft patch to fix the issue. Thanks, Satya --0000000000002d2d74064f0c1e8c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Paul, Peter,

=
I found a Server crash when using UPDATE ... FOR PORTION OF or DELETE = ... FOR PORTION OF on a view that has INSTEAD OF triggers.

Repro:

CREATE TABLE t (id INT, valid_at daterange, val INT);
INSERT= INTO t VALUES (1, '[2026-01-01,2026-12-31)', 100);
CREATE VIEW = v AS SELECT * FROM t;

CREATE FUNCTION v_trig() RETURNS trigger LANGU= AGE plpgsql AS $$
BEGIN
=C2=A0 =C2=A0 UPDATE t SET val =3D NEW.val WH= ERE id =3D OLD.id;
=C2=A0 =C2=A0 RETURN NEW;
END;
$$;
CREATE TR= IGGER trg INSTEAD OF UPDATE ON v
=C2=A0 =C2=A0 FOR EACH ROW EXECUTE FUNC= TION v_trig();

-- This crashes the server:
UPDATE v FOR PORTION O= F valid_at FROM '2026-04-01' TO '2026-08-01'
=C2=A0 =C2= =A0 SET val =3D 999 WHERE id =3D 1;

I am thinking we should just rej= ect this case. Attached a draft patch to fix the issue.=C2=A0

Thanks,
Satya
--0000000000002d2d74064f0c1e8c--