33-- We leave behind several tables to test pg_dump etc:
44-- temporal_rng, temporal_rng2,
55-- temporal_fk_rng2rng.
6+ SET datestyle TO ISO, YMD;
67--
78-- test input parser
89--
910-- PK with no columns just WITHOUT OVERLAPS:
1011CREATE TABLE temporal_rng (
11- valid_at tsrange ,
12+ valid_at daterange ,
1213 CONSTRAINT temporal_rng_pk PRIMARY KEY (valid_at WITHOUT OVERLAPS)
1314);
1415ERROR: constraint using WITHOUT OVERLAPS needs at least two columns
@@ -34,15 +35,15 @@ CREATE TABLE temporal_rng (
3435 -- use an int4range instead of an int.
3536 -- (The rangetypes regression test uses the same trick.)
3637 id int4range,
37- valid_at tsrange ,
38+ valid_at daterange ,
3839 CONSTRAINT temporal_rng_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS)
3940);
4041\d temporal_rng
4142 Table "public.temporal_rng"
4243 Column | Type | Collation | Nullable | Default
4344----------+-----------+-----------+----------+---------
4445 id | int4range | | not null |
45- valid_at | tsrange | | not null |
46+ valid_at | daterange | | not null |
4647Indexes:
4748 "temporal_rng_pk" PRIMARY KEY (id, valid_at WITHOUT OVERLAPS)
4849
@@ -63,7 +64,7 @@ SELECT pg_get_indexdef(conindid, 0, true) FROM pg_constraint WHERE conname = 'te
6364CREATE TABLE temporal_rng2 (
6465 id1 int4range,
6566 id2 int4range,
66- valid_at tsrange ,
67+ valid_at daterange ,
6768 CONSTRAINT temporal_rng2_pk PRIMARY KEY (id1, id2, valid_at WITHOUT OVERLAPS)
6869);
6970\d temporal_rng2
@@ -72,7 +73,7 @@ CREATE TABLE temporal_rng2 (
7273----------+-----------+-----------+----------+---------
7374 id1 | int4range | | not null |
7475 id2 | int4range | | not null |
75- valid_at | tsrange | | not null |
76+ valid_at | daterange | | not null |
7677Indexes:
7778 "temporal_rng2_pk" PRIMARY KEY (id1, id2, valid_at WITHOUT OVERLAPS)
7879
@@ -115,7 +116,7 @@ Indexes:
115116
116117-- UNIQUE with no columns just WITHOUT OVERLAPS:
117118CREATE TABLE temporal_rng3 (
118- valid_at tsrange ,
119+ valid_at daterange ,
119120 CONSTRAINT temporal_rng3_uq UNIQUE (valid_at WITHOUT OVERLAPS)
120121);
121122ERROR: constraint using WITHOUT OVERLAPS needs at least two columns
@@ -138,15 +139,15 @@ HINT: You must specify an operator class for the index or define a default oper
138139-- UNIQUE with one column plus a range:
139140CREATE TABLE temporal_rng3 (
140141 id int4range,
141- valid_at tsrange ,
142+ valid_at daterange ,
142143 CONSTRAINT temporal_rng3_uq UNIQUE (id, valid_at WITHOUT OVERLAPS)
143144);
144145\d temporal_rng3
145146 Table "public.temporal_rng3"
146147 Column | Type | Collation | Nullable | Default
147148----------+-----------+-----------+----------+---------
148149 id | int4range | | |
149- valid_at | tsrange | | |
150+ valid_at | daterange | | |
150151Indexes:
151152 "temporal_rng3_uq" UNIQUE (id, valid_at WITHOUT OVERLAPS)
152153
@@ -167,7 +168,7 @@ DROP TABLE temporal_rng3;
167168CREATE TABLE temporal_rng3 (
168169 id1 int4range,
169170 id2 int4range,
170- valid_at tsrange ,
171+ valid_at daterange ,
171172 CONSTRAINT temporal_rng3_uq UNIQUE (id1, id2, valid_at WITHOUT OVERLAPS)
172173);
173174\d temporal_rng3
@@ -176,7 +177,7 @@ CREATE TABLE temporal_rng3 (
176177----------+-----------+-----------+----------+---------
177178 id1 | int4range | | |
178179 id2 | int4range | | |
179- valid_at | tsrange | | |
180+ valid_at | daterange | | |
180181Indexes:
181182 "temporal_rng3_uq" UNIQUE (id1, id2, valid_at WITHOUT OVERLAPS)
182183
@@ -209,15 +210,15 @@ DROP TYPE textrange2;
209210DROP TABLE temporal_rng;
210211CREATE TABLE temporal_rng (
211212 id int4range,
212- valid_at tsrange
213+ valid_at daterange
213214);
214215ALTER TABLE temporal_rng
215216 ADD CONSTRAINT temporal_rng_pk
216217 PRIMARY KEY (id, valid_at WITHOUT OVERLAPS);
217218-- PK with USING INDEX (not possible):
218219CREATE TABLE temporal3 (
219220 id int4range,
220- valid_at tsrange
221+ valid_at daterange
221222);
222223CREATE INDEX idx_temporal3_uq ON temporal3 USING gist (id, valid_at);
223224ALTER TABLE temporal3
@@ -231,7 +232,7 @@ DROP TABLE temporal3;
231232-- UNIQUE with USING INDEX (not possible):
232233CREATE TABLE temporal3 (
233234 id int4range,
234- valid_at tsrange
235+ valid_at daterange
235236);
236237CREATE INDEX idx_temporal3_uq ON temporal3 USING gist (id, valid_at);
237238ALTER TABLE temporal3
@@ -245,7 +246,7 @@ DROP TABLE temporal3;
245246-- UNIQUE with USING [UNIQUE] INDEX (possible but not a temporal constraint):
246247CREATE TABLE temporal3 (
247248 id int4range,
248- valid_at tsrange
249+ valid_at daterange
249250);
250251CREATE UNIQUE INDEX idx_temporal3_uq ON temporal3 (id, valid_at);
251252ALTER TABLE temporal3
@@ -258,7 +259,7 @@ CREATE TABLE temporal3 (
258259 id int4range
259260);
260261ALTER TABLE temporal3
261- ADD COLUMN valid_at tsrange ,
262+ ADD COLUMN valid_at daterange ,
262263 ADD CONSTRAINT temporal3_pk
263264 PRIMARY KEY (id, valid_at WITHOUT OVERLAPS);
264265DROP TABLE temporal3;
@@ -267,25 +268,25 @@ CREATE TABLE temporal3 (
267268 id int4range
268269);
269270ALTER TABLE temporal3
270- ADD COLUMN valid_at tsrange ,
271+ ADD COLUMN valid_at daterange ,
271272 ADD CONSTRAINT temporal3_uq
272273 UNIQUE (id, valid_at WITHOUT OVERLAPS);
273274DROP TABLE temporal3;
274275--
275276-- test PK inserts
276277--
277278-- okay:
278- INSERT INTO temporal_rng VALUES ('[1,1]', tsrange ('2018-01-02', '2018-02-03'));
279- INSERT INTO temporal_rng VALUES ('[1,1]', tsrange ('2018-03-03', '2018-04-04'));
280- INSERT INTO temporal_rng VALUES ('[2,2]', tsrange ('2018-01-01', '2018-01-05'));
281- INSERT INTO temporal_rng VALUES ('[3,3]', tsrange ('2018-01-01', NULL));
279+ INSERT INTO temporal_rng VALUES ('[1,1]', daterange ('2018-01-02', '2018-02-03'));
280+ INSERT INTO temporal_rng VALUES ('[1,1]', daterange ('2018-03-03', '2018-04-04'));
281+ INSERT INTO temporal_rng VALUES ('[2,2]', daterange ('2018-01-01', '2018-01-05'));
282+ INSERT INTO temporal_rng VALUES ('[3,3]', daterange ('2018-01-01', NULL));
282283-- should fail:
283- INSERT INTO temporal_rng VALUES ('[1,1]', tsrange ('2018-01-01', '2018-01-05'));
284+ INSERT INTO temporal_rng VALUES ('[1,1]', daterange ('2018-01-01', '2018-01-05'));
284285ERROR: conflicting key value violates exclusion constraint "temporal_rng_pk"
285- DETAIL: Key (id, valid_at)=([1,2), ["Mon Jan 01 00:00:00 2018","Fri Jan 05 00:00:00 2018" )) conflicts with existing key (id, valid_at)=([1,2), ["Tue Jan 02 00:00:00 2018","Sat Feb 03 00:00:00 2018" )).
286- INSERT INTO temporal_rng VALUES (NULL, tsrange ('2018-01-01', '2018-01-05'));
286+ DETAIL: Key (id, valid_at)=([1,2), [2018-01-01, 2018-01-05 )) conflicts with existing key (id, valid_at)=([1,2), [2018-01-02, 2018-02-03 )).
287+ INSERT INTO temporal_rng VALUES (NULL, daterange ('2018-01-01', '2018-01-05'));
287288ERROR: null value in column "id" of relation "temporal_rng" violates not-null constraint
288- DETAIL: Failing row contains (null, ["Mon Jan 01 00:00:00 2018","Fri Jan 05 00:00:00 2018" )).
289+ DETAIL: Failing row contains (null, [2018-01-01, 2018-01-05 )).
289290INSERT INTO temporal_rng VALUES ('[3,3]', NULL);
290291ERROR: null value in column "valid_at" of relation "temporal_rng" violates not-null constraint
291292DETAIL: Failing row contains ([3,4), null).
@@ -311,7 +312,7 @@ DROP TABLE temporal3;
311312--
312313CREATE TABLE temporal3 (
313314 id int4range,
314- valid_at tsrange ,
315+ valid_at daterange ,
315316 CONSTRAINT temporal3_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS)
316317);
317318ALTER TABLE temporal3 ALTER COLUMN valid_at DROP NOT NULL;
@@ -339,22 +340,22 @@ INSERT INTO temporal_partitioned VALUES
339340SELECT * FROM temporal_partitioned ORDER BY id, valid_at;
340341 id | valid_at | name
341342-------+-------------------------+-------
342- [1,2) | [01 -01-2000, 02-01-2000 ) | one
343- [1,2) | [02-01-2000, 03-01-2000 ) | one
344- [3,4) | [01 -01-2000,01 -01-2010 ) | three
343+ [1,2) | [2000 -01-01,2000- 02-01) | one
344+ [1,2) | [2000- 02-01,2000- 03-01) | one
345+ [3,4) | [2000 -01-01,2010 -01-01 ) | three
345346(3 rows)
346347
347348SELECT * FROM tp1 ORDER BY id, valid_at;
348349 id | valid_at | name
349350-------+-------------------------+------
350- [1,2) | [01 -01-2000, 02-01-2000 ) | one
351- [1,2) | [02-01-2000, 03-01-2000 ) | one
351+ [1,2) | [2000 -01-01,2000- 02-01) | one
352+ [1,2) | [2000- 02-01,2000- 03-01) | one
352353(2 rows)
353354
354355SELECT * FROM tp2 ORDER BY id, valid_at;
355356 id | valid_at | name
356357-------+-------------------------+-------
357- [3,4) | [01 -01-2000,01 -01-2010 ) | three
358+ [3,4) | [2000 -01-01,2010 -01-01 ) | three
358359(1 row)
359360
360361DROP TABLE temporal_partitioned;
@@ -374,22 +375,23 @@ INSERT INTO temporal_partitioned VALUES
374375SELECT * FROM temporal_partitioned ORDER BY id, valid_at;
375376 id | valid_at | name
376377-------+-------------------------+-------
377- [1,2) | [01 -01-2000, 02-01-2000 ) | one
378- [1,2) | [02-01-2000, 03-01-2000 ) | one
379- [3,4) | [01 -01-2000,01 -01-2010 ) | three
378+ [1,2) | [2000 -01-01,2000- 02-01) | one
379+ [1,2) | [2000- 02-01,2000- 03-01) | one
380+ [3,4) | [2000 -01-01,2010 -01-01 ) | three
380381(3 rows)
381382
382383SELECT * FROM tp1 ORDER BY id, valid_at;
383384 id | valid_at | name
384385-------+-------------------------+------
385- [1,2) | [01 -01-2000, 02-01-2000 ) | one
386- [1,2) | [02-01-2000, 03-01-2000 ) | one
386+ [1,2) | [2000 -01-01,2000- 02-01) | one
387+ [1,2) | [2000- 02-01,2000- 03-01) | one
387388(2 rows)
388389
389390SELECT * FROM tp2 ORDER BY id, valid_at;
390391 id | valid_at | name
391392-------+-------------------------+-------
392- [3,4) | [01 -01-2000,01 -01-2010 ) | three
393+ [3,4) | [2000 -01-01,2010 -01-01 ) | three
393394(1 row)
394395
395396DROP TABLE temporal_partitioned;
397+ RESET datestyle;
0 commit comments