Re: SQL:2011 application time
Paul A Jungwirth <pj@illuminatedcomputing.com>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Rename gist stratnum support function
- 32edf732e8dc 18.0 landed
-
Remove support for temporal RESTRICT foreign keys
- b83e8a2ca2eb 18.0 landed
-
Cache NO ACTION foreign keys separately from RESTRICT foreign keys
- 9926f854d077 18.0 landed
-
Fix NO ACTION temporal foreign keys when the referenced endpoints change
- 1772d554b089 18.0 landed
-
Improve whitespace in without_overlaps test
- 888d4523f0c2 18.0 landed
-
Tests for logical replication with temporal keys
- 939b0908c87a 18.0 landed
-
Support for GiST in get_equal_strategy_number()
- 74edabce7a33 18.0 landed
-
Make the conditions in IsIndexUsableForReplicaIdentityFull() more explicit
- 13544e790ef8 18.0 landed
-
Replace get_equal_strategy_number_for_am() by get_equal_strategy_number()
- a2a475b011cf 18.0 landed
-
Improve internal logical replication error for missing equality strategy
- 321c287351f7 18.0 landed
-
Simplify IsIndexUsableForReplicaIdentityFull()
- 7727049e8f66 18.0 landed
-
Fix ALTER TABLE / REPLICA IDENTITY for temporal tables
- 79b575d3bc09 18.0 landed
-
doc: Update pg_constraint.conexclop docs for WITHOUT OVERLAPS
- f683ba0867da 18.0 landed
-
doc: Add PERIOD to ALTER TABLE reference docs
- d56af4c882e2 18.0 landed
-
doc: Add WITHOUT OVERLAPS to ALTER TABLE reference docs
- bf621059500b 18.0 landed
-
Add temporal FOREIGN KEY contraints
- 89f908a6d0ac 18.0 landed
- 34768ee36165 17.0 landed
-
Add temporal PRIMARY KEY and UNIQUE constraints
- fc0438b4e805 18.0 landed
- 46a0cd4cefb4 17.0 landed
-
Add stratnum GiST support function
- 7406ab623fee 18.0 landed
- 6db4598fcb82 17.0 landed
-
Avoid crashing when a JIT-inlined backend function throws an error.
- 5d6c64d29097 17.0 cited
-
Revert temporal primary keys and foreign keys
- 8aee330af55d 17.0 landed
-
Fix ON CONFLICT DO NOTHING/UPDATE for temporal indexes
- 144c2ce0cc75 17.0 landed
-
Add test for REPLICA IDENTITY with a temporal key
- 482e108cd38d 17.0 landed
-
Use half-open interval notation in without_overlaps tests
- 5577a71fb0cc 17.0 landed
-
Use daterange and YMD in without_overlaps tests instead of tsrange.
- a88c800deb6f 17.0 landed
-
Rename pg_constraint.conwithoutoverlaps to conperiod
- 030e10ff1a36 17.0 landed
-
Fix comment on gist_stratnum_btree
- 86232a49a437 17.0 landed
-
Add missing TAP test name
- 1ab763fc22ad 16.0 cited
-
Improve error handling of HMAC computations
- 5513dc6a304d 15.0 cited
-
Rename functions to avoid future conflicts
- ee419607381d 15.0 landed
Attachments
- v14-0001-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch (text/x-patch) patch v14-0001
- v14-0002-Add-temporal-FOREIGN-KEYs.patch (text/x-patch) patch v14-0002
- v14-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch (text/x-patch) patch v14-0003
- v14-0004-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.patch (text/x-patch) patch v14-0004
- v14-0005-Add-PERIODs.patch (text/x-patch) patch v14-0005
Thanks for the thorough review and testing!
Here is a v14 patch with the segfault and incorrect handling of NO
ACTION and RESTRICT fixed (and reproductions added to the test suite).
A few more comments below on feedback from you and Peter:
On 9/12/23 02:01, jian he wrote:
> hi. some trivial issue:
>
> in src/backend/catalog/index.c
> /* * System attributes are never null, so no need to check. */
> if (attnum <= 0)
>
> since you already checked attnum == 0
> so here you can just attnum < 0?
I fixed the "/* *" typo here. I'm reluctant to change the attnum
comparison since that's not a line I touched. (It was just part of the
context around the updated comment.) Your suggestion does make sense
though, so perhaps it should be a separate commit?
> ERROR: column "valid_at" named in WITHOUT OVERLAPS is not a range type
>
> IMHO, "named" is unnecessary.
Changed.
> doc/src/sgml/catalogs.sgml
> pg_constraint adds another attribute (column): contemporal, seems no doc entry.
Added.
> also the temporal in oxford definition is "relating to time", here we
> can deal with range.
> So maybe "temporal" is not that accurate?
I agree if we allow multiple WITHOUT OVERLAPS/etc clauses, we should
change the terminology. I'll include that with the multiple-range-keys
change discussed upthread.
On 9/1/23 02:30, Peter Eisentraut wrote:
> * There is a lot of talk about "temporal" in this patch, but this
> functionality is more general than temporal. I would prefer to change
> this to more neutral terms like "overlaps".
Okay, sounds like several of us agree on this.
> * The field ii_Temporal in IndexInfo doesn't seem necessary and could
> be handled via local variables. See [0] for a similar discussion:
>
> [0]:
>
https://www.postgresql.org/message-id/flat/f84640e3-00d3-5abd-3f41-e6a19d33c40b@eisentraut.org
Done.
> * In gram.y, change withoutOverlapsClause -> without_overlaps_clause
> for consistency with the surrounding code.
Done.
> * No-op assignments like n->without_overlaps = NULL; can be omitted.
> (Or you should put them everywhere. But only in some places seems
> inconsistent and confusing.)
Changed. That makes sense since newNode uses palloc0fast. FWIW there is
quite a lot of other code in gram.y that sets NULL fields though,
including in ConstraintElem, and it seems like it does improve the
clarity a little. By "everywhere" I think you mean wherever the file
calls makeNode(Constraint)? I might go back and do it that way later.
I'll keep working on a patch to support multiple range keys, but I
wanted to work through the rest of the feedback first. Also there is
some fixing to do with partitions I believe, and then I'll finish the
PERIOD support. So this v14 patch is just some minor fixes & tweaks from
September feedback.
Yours,
--
Paul ~{:-)
pj@illuminatedcomputing.com