Re: SQL:2011 application time
jian he <jian.universality@gmail.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
- v1-0001-refactor-findNewOrOldColumn.patch (text/x-patch) patch v1-0001
On Wed, Oct 11, 2023 at 12:47 PM Paul Jungwirth <pj@illuminatedcomputing.com> wrote: > > On 9/25/23 14:00, Peter Eisentraut wrote: > > Looking through the tests in v16-0001: > > > > +-- PK with no columns just WITHOUT OVERLAPS: > > +CREATE TABLE temporal_rng ( > > + valid_at tsrange, > > + CONSTRAINT temporal_rng_pk PRIMARY KEY (valid_at WITHOUT OVERLAPS) > > +); > > +ERROR: syntax error at or near "WITHOUT" > > +LINE 3: CONSTRAINT temporal_rng_pk PRIMARY KEY (valid_at WITHOUT OV... > > + ^ > > > > I think this error is confusing. The SQL standard requires at least one > > non-period column in a PK. I don't know why that is or why we should > > implement it. But if we want to implement it, maybe we should enforce > > that in parse analysis rather than directly in the parser, to be able to > > produce a more friendly error message. > > Okay. > > (I think the reason the standard requires one non-period column is to > identify the "entity". If philosophically the row is an Aristotelian > proposition about that thing, the period qualifies it as true just > during some time span. So the scalar part is doing the work that a PK > conventionally does, and the period part does something else. Perhaps a > PK/UNIQUE constraint with no scalar part would still be useful, but not > very often I think, and I'm not sure it makes sense to call it PK/UNIQUE.) > > > +-- PK with a range column/PERIOD that isn't there: > > +CREATE TABLE temporal_rng ( > > + id INTEGER, > > + CONSTRAINT temporal_rng_pk PRIMARY KEY (id, valid_at WITHOUT > > OVERLAPS) > > +); > > +ERROR: range or PERIOD "valid_at" in WITHOUT OVERLAPS does not exist > > > > I think here we should just produce a "column doesn't exist" error > > message, the same as if the "id" column was invalid. We don't need to > > get into the details of what kind of column it should be. That is done > > in the next test > > I'll change it. The reason for the different wording is that it might > not be a column at all. It might be a PERIOD. So what about just "column > or PERIOD doesn't exist"? (Your suggestion is fine too though.) > > > +ERROR: column "valid_at" in WITHOUT OVERLAPS is not a range type > > > > Also, in any case it would be nice to have a location pointer here (for > > both cases). > > Agreed. > I refactored findNeworOldColumn to better handle error reports. please check the attached.