| From: | SATYANARAYANA NARLAPURAM <satyanarlapuram(at)gmail(dot)com> |
|---|---|
| To: | Peter Eisentraut <peter(at)eisentraut(dot)org> |
| Cc: | Paul A Jungwirth <pj(at)illuminatedcomputing(dot)com>, Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: SQL:2011 Application Time Update & Delete |
| Date: | 2026-04-09 19:35:13 |
| Message-ID: | CAHg+QDd74fnd4obCRMqVS0AVWf=cSFH=Cv7trTJWgm+_bhTK6w@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
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
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Masahiko Sawada | 2026-04-09 19:40:55 | Re: test_autovacuum/001_parallel_autovacuum is broken |
| Previous Message | Daniil Davydov | 2026-04-09 19:32:30 | Re: test_autovacuum/001_parallel_autovacuum is broken |