From: | Paul Jungwirth <pj(at)illuminatedcomputing(dot)com> |
---|---|
To: | Peter Eisentraut <peter(at)eisentraut(dot)org>, jian he <jian(dot)universality(at)gmail(dot)com> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: SQL:2011 application time |
Date: | 2024-01-24 22:06:56 |
Message-ID: | 113f5e25-4455-4bdb-98ec-56275705cc4e@illuminatedcomputing.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 1/24/24 08:32, Peter Eisentraut wrote:
> On 18.01.24 04:59, Paul Jungwirth wrote:
>> Here are new patches consolidating feedback from several emails.
>
> I have committed 0001 and 0002 (the primary key support).
Thanks Peter! I noticed the comment on gist_stratnum_btree was out-of-date, so here is a tiny patch
correcting it.
Also the remaining patches with some updates:
I fixed the dependency issues with PERIODs and their (hidden) GENERATED range columns. This has been
causing test failures and bugging me since I reordered the patches at PgCon, so I'm glad to finally
clean it up. The PERIOD should have an INTERNAL dependency on the range column, but then when you
dropped the table the dependency code thought the whole table was part of the INTERNAL dependency,
so the drop would fail. The PERIOD patch here fixes the dependency logic. (I guess this is the first
time a column has been an internal dependency of something.)
I also fixed an error message when you try to change the type of a start/end column used by a
PERIOD. Previously the error message would complain about the GENERATED column, not the PERIOD,
which seems confusing. In fact it was non-deterministic, depending on which pg_depend record the
index returned first.
On 12/6/23 05:22, jian he wrote:
> tring to the following TODO:
> // TODO: Need to save context->mtstate->mt_transition_capture? (See
> comment on ExecInsert)
>
> but failed.
> I also attached the trial, and also added the related test.
>
> You can also use the test to check portion update with insert trigger
> with "referencing old table as old_table new table as new_table"
> situation.
Thank you for the very helpful test case here. I fixed the issue of not passing along the transition
table. But there is still more work to do here I think:
- The AFTER INSERT FOR EACH ROW triggers have *both* leftover rows in the NEW table. Now the docs do
say that for AFTER triggers, a named transition table can see all the changes from the *statement*
(although that seems pretty weird to me), but the inserts are two *separate* statements. I think the
SQL:2011 standard is fairly clear about that. So each time the trigger fires we should still get
just one row in the transition table.
- The AFTER INSERT FOR EACH STATEMENT triggers never fire. That happens outside ExecInsert (in
ExecModifyTable). In fact there is a bunch of stuff in ExecModifyTable that maybe we need to do when
we insert leftovers. Do we even need a separate exec node, perhaps wrapping ExecModifyTable? I'm not
sure that would give us the correct trigger ordering for the triggers on the implicit insert
statement(s) vs the explicit update/delete statement, so maybe it does all need to be part of the
single node. But still I think we need to be more careful about memory, especially the per-tuple
context.
I'll keep working on that, but at least in this round of patches the transition tables aren't
missing completely.
My plan is still to replace the 'p' amoppurpose operators with just support functions. I want to do
that next, although as Peter requested I'll also start focusing more narrowly on the foreign key
patches.
Rebased to 46a0cd4cef.
Yours,
--
Paul ~{:-)
pj(at)illuminatedcomputing(dot)com
Attachment | Content-Type | Size |
---|---|---|
v24-0001-Fix-comment-on-gist_stratnum_btree.patch | text/x-patch | 837 bytes |
v24-0002-Add-GiST-referencedagg-support-func.patch | text/x-patch | 9.9 KB |
v24-0003-Add-temporal-FOREIGN-KEYs.patch | text/x-patch | 150.3 KB |
v24-0004-Add-multi-range_without_portion-proc-operator.patch | text/x-patch | 17.6 KB |
v24-0005-Add-UPDATE-DELETE-FOR-PORTION-OF.patch | text/x-patch | 160.5 KB |
v24-0006-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.patch | text/x-patch | 112.0 KB |
v24-0007-Add-PERIODs.patch | text/x-patch | 133.7 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Smith | 2024-01-24 22:12:28 | Re: Make documentation builds reproducible |
Previous Message | Maiquel Grassi | 2024-01-24 22:05:29 | Current Connection Information |