mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-06 10:06:54 +02:00
45 lines
1.8 KiB
Plaintext
45 lines
1.8 KiB
Plaintext
|
-- Core must test WITHOUT OVERLAPS
|
||
|
-- with an int4range + daterange,
|
||
|
-- so here we do some simple tests
|
||
|
-- to make sure int + daterange works too,
|
||
|
-- since that is the expected use-case.
|
||
|
CREATE TABLE temporal_rng (
|
||
|
id integer,
|
||
|
valid_at daterange,
|
||
|
CONSTRAINT temporal_rng_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS)
|
||
|
);
|
||
|
\d temporal_rng
|
||
|
Table "public.temporal_rng"
|
||
|
Column | Type | Collation | Nullable | Default
|
||
|
----------+-----------+-----------+----------+---------
|
||
|
id | integer | | not null |
|
||
|
valid_at | daterange | | not null |
|
||
|
Indexes:
|
||
|
"temporal_rng_pk" PRIMARY KEY (id, valid_at WITHOUT OVERLAPS)
|
||
|
|
||
|
SELECT pg_get_constraintdef(oid) FROM pg_constraint WHERE conname = 'temporal_rng_pk';
|
||
|
pg_get_constraintdef
|
||
|
---------------------------------------------
|
||
|
PRIMARY KEY (id, valid_at WITHOUT OVERLAPS)
|
||
|
(1 row)
|
||
|
|
||
|
SELECT pg_get_indexdef(conindid, 0, true) FROM pg_constraint WHERE conname = 'temporal_rng_pk';
|
||
|
pg_get_indexdef
|
||
|
-------------------------------------------------------------------------------
|
||
|
CREATE UNIQUE INDEX temporal_rng_pk ON temporal_rng USING gist (id, valid_at)
|
||
|
(1 row)
|
||
|
|
||
|
INSERT INTO temporal_rng VALUES
|
||
|
(1, '[2000-01-01,2001-01-01)');
|
||
|
-- same key, doesn't overlap:
|
||
|
INSERT INTO temporal_rng VALUES
|
||
|
(1, '[2001-01-01,2002-01-01)');
|
||
|
-- overlaps but different key:
|
||
|
INSERT INTO temporal_rng VALUES
|
||
|
(2, '[2000-01-01,2001-01-01)');
|
||
|
-- should fail:
|
||
|
INSERT INTO temporal_rng VALUES
|
||
|
(1, '[2000-06-01,2001-01-01)');
|
||
|
ERROR: conflicting key value violates exclusion constraint "temporal_rng_pk"
|
||
|
DETAIL: Key (id, valid_at)=(1, [06-01-2000,01-01-2001)) conflicts with existing key (id, valid_at)=(1, [01-01-2000,01-01-2001)).
|