Re: SQL:2011 Application Time Update & Delete - Mailing list pgsql-hackers

From SATYANARAYANA NARLAPURAM
Subject Re: SQL:2011 Application Time Update & Delete
Date
Msg-id CAHg+QDcVL2d4ih5zs2Mzh63ts41N+jtnMQTdZ2_0be6aF4aqYQ@mail.gmail.com
Whole thread
In response to Re: SQL:2011 Application Time Update & Delete  (SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com>)
Responses Re: SQL:2011 Application Time Update & Delete
List pgsql-hackers


On Thu, Apr 9, 2026 at 12:35 PM SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com> wrote:
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. 

Patches attached now.
 
Attachment

pgsql-hackers by date:

Previous
From: Masahiko Sawada
Date:
Subject: Re: test_autovacuum/001_parallel_autovacuum is broken
Next
From: Sami Imseih
Date:
Subject: Re: test_autovacuum/001_parallel_autovacuum is broken