Re: SQL:2011 Application Time Update & Delete

From: Paul A Jungwirth <pj(at)illuminatedcomputing(dot)com>
To: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Robert Haas <robertmhaas(at)gmail(dot)com>, Peter Eisentraut <peter(at)eisentraut(dot)org>
Subject: Re: SQL:2011 Application Time Update & Delete
Date: 2025-09-25 04:05:41
Message-ID: CA+renyWA-b00qvz4gDdPbPBjVatacB1T5v7SJc6J_xg3R6-qRw@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Fri, Aug 29, 2025 at 6:03 AM Paul A Jungwirth
<pj(at)illuminatedcomputing(dot)com> wrote:
> I'm still working on the PERIOD DDL, but that doesn't have to go in at
> the same time. The tricky part is ALTER TABLE ADD PERIOD, where I need
> to wait until the add-columns pass to see the start/end columns'
> type/etc, but then in that same pass I need to add a generated range
> column. If I add the column in a later pass, I get a failure, e.g.
> "cannot ALTER TABLE "pt" because it is being used by active queries in
> this session". This only appeared with recent(ish) NOT NULL work. I
> think the solution is to avoid holding a relcache entry longer than
> needed, but I haven't had a chance to locate the issue yet.

Here is another update, now with working PERIOD DDL. I also fixed some
new post-rebase problems causing CI to fail.

There is a detailed wiki page attached to the commitfest entry. To
summarize the patches here:

- Four documentation patches adding a new chapter introducing temporal
concepts. This are split out by topic: primary key + unique
constraints, foreign keys, PERIODs, and UPDATE/DELETE FOR PORTION OF.
- Two patches adding UPDATE/DELETE FOR PORTION OF. (I broke out the
helper functions that compute temporal leftovers.)
- Some patches adding CASCADE/SET NULL/SET DEFAULT to temporal foreign
keys. Once you have UPDATE/DELETE FOR PORTION OF, these are easy. You
do need to know the FOR PORTION OF bounds though, so one of the
patches adds that to the TriggerData struct.
- A patch to add the same bounds info to PL/pgSQL trigger variables.
- A patch to add PERIOD DDL support, based on hidden GENERATED
rangetype columns.

Rebased to d96c854dfc.

Yours,

--
Paul ~{:-)
pj(at)illuminatedcomputing(dot)com

Attachment Content-Type Size
v54-0003-Document-temporal-PERIODs.patch application/octet-stream 1.9 KB
v54-0002-Document-temporal-foreign-keys.patch application/octet-stream 9.6 KB
v54-0001-Add-docs-chapter-for-temporal-tables.patch application/octet-stream 17.7 KB
v54-0005-Add-range_minus_multi-and-multirange_minus_multi.patch application/octet-stream 22.7 KB
v54-0007-Add-tg_temporal-to-TriggerData.patch application/octet-stream 10.3 KB
v54-0006-Add-UPDATE-DELETE-FOR-PORTION-OF.patch application/octet-stream 200.7 KB
v54-0004-Document-temporal-update-delete.patch application/octet-stream 23.8 KB
v54-0008-Look-up-more-temporal-foreign-key-helper-procs.patch application/octet-stream 6.8 KB
v54-0009-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.patch application/octet-stream 205.8 KB
v54-0010-Expose-FOR-PORTION-OF-to-plpgsql-triggers.patch application/octet-stream 14.5 KB
v54-0011-Add-PERIODs.patch application/octet-stream 563.0 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Richard Guo 2025-09-25 04:23:00 Re: Eager aggregation, take 3
Previous Message shveta malik 2025-09-25 03:59:31 Re: Report bytes and transactions actually sent downtream