mirror of
https://github.com/postgres/postgres.git
synced 2025-05-01 01:04:50 +03:00
Improve whitespace in without_overlaps test
Make some indentation better and more consistent. Extracted from another patch with some actual test changes. Discussion: https://www.postgresql.org/message-id/flat/CA+renyUApHgSZF9-nd-a0+OPGharLQLO=mDHcY4_qQ0+noCUVg@mail.gmail.com
This commit is contained in:
parent
44b61efb79
commit
888d4523f0
@ -1690,9 +1690,10 @@ DELETE FROM temporal_rng WHERE id = '[5,6)';
|
||||
INSERT INTO temporal_rng (id, valid_at) VALUES
|
||||
('[5,6)', daterange('2018-01-01', '2018-02-01')),
|
||||
('[5,6)', daterange('2018-02-01', '2018-03-01'));
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id) VALUES ('[3,4)', daterange('2018-01-05', '2018-01-10'), '[5,6)');
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id)
|
||||
VALUES ('[3,4)', daterange('2018-01-05', '2018-01-10'), '[5,6)');
|
||||
UPDATE temporal_rng SET valid_at = daterange('2016-02-01', '2016-03-01')
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-02-01', '2018-03-01');
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-02-01', '2018-03-01');
|
||||
-- A PK update sliding the edge between two referenced rows:
|
||||
INSERT INTO temporal_rng (id, valid_at) VALUES
|
||||
('[6,7)', daterange('2018-01-01', '2018-02-01')),
|
||||
@ -1700,12 +1701,12 @@ INSERT INTO temporal_rng (id, valid_at) VALUES
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id) VALUES
|
||||
('[4,5)', daterange('2018-01-15', '2018-02-15'), '[6,7)');
|
||||
UPDATE temporal_rng
|
||||
SET valid_at = CASE WHEN lower(valid_at) = '2018-01-01' THEN daterange('2018-01-01', '2018-01-05')
|
||||
SET valid_at = CASE WHEN lower(valid_at) = '2018-01-01' THEN daterange('2018-01-01', '2018-01-05')
|
||||
WHEN lower(valid_at) = '2018-02-01' THEN daterange('2018-01-05', '2018-03-01') END
|
||||
WHERE id = '[6,7)';
|
||||
WHERE id = '[6,7)';
|
||||
-- a PK update that fails because both are referenced:
|
||||
UPDATE temporal_rng SET valid_at = daterange('2016-01-01', '2016-02-01')
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
ERROR: update or delete on table "temporal_rng" violates foreign key constraint "temporal_fk_rng2rng_fk" on table "temporal_fk_rng2rng"
|
||||
DETAIL: Key (id, valid_at)=([5,6), [2018-01-01,2018-02-01)) is still referenced from table "temporal_fk_rng2rng".
|
||||
-- a PK update that fails because both are referenced, but not 'til commit:
|
||||
@ -1720,13 +1721,13 @@ ERROR: update or delete on table "temporal_rng" violates foreign key constraint
|
||||
DETAIL: Key (id, valid_at)=([5,6), [2018-01-01,2018-02-01)) is still referenced from table "temporal_fk_rng2rng".
|
||||
-- changing the scalar part fails:
|
||||
UPDATE temporal_rng SET id = '[7,8)'
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
ERROR: update or delete on table "temporal_rng" violates foreign key constraint "temporal_fk_rng2rng_fk" on table "temporal_fk_rng2rng"
|
||||
DETAIL: Key (id, valid_at)=([5,6), [2018-01-01,2018-02-01)) is still referenced from table "temporal_fk_rng2rng".
|
||||
-- then delete the objecting FK record and the same PK update succeeds:
|
||||
DELETE FROM temporal_fk_rng2rng WHERE id = '[3,4)';
|
||||
UPDATE temporal_rng SET valid_at = daterange('2016-01-01', '2016-02-01')
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
--
|
||||
-- test FK referenced updates RESTRICT
|
||||
--
|
||||
@ -1746,9 +1747,10 @@ DELETE FROM temporal_rng WHERE id = '[5,6)';
|
||||
INSERT INTO temporal_rng (id, valid_at) VALUES
|
||||
('[5,6)', daterange('2018-01-01', '2018-02-01')),
|
||||
('[5,6)', daterange('2018-02-01', '2018-03-01'));
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id) VALUES ('[3,4)', daterange('2018-01-05', '2018-01-10'), '[5,6)');
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id) VALUES
|
||||
('[3,4)', daterange('2018-01-05', '2018-01-10'), '[5,6)');
|
||||
UPDATE temporal_rng SET valid_at = daterange('2016-02-01', '2016-03-01')
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-02-01', '2018-03-01');
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-02-01', '2018-03-01');
|
||||
-- A PK update sliding the edge between two referenced rows:
|
||||
INSERT INTO temporal_rng (id, valid_at) VALUES
|
||||
('[6,7)', daterange('2018-01-01', '2018-02-01')),
|
||||
@ -1756,9 +1758,9 @@ INSERT INTO temporal_rng (id, valid_at) VALUES
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id) VALUES
|
||||
('[4,5)', daterange('2018-01-15', '2018-02-15'), '[6,7)');
|
||||
UPDATE temporal_rng
|
||||
SET valid_at = CASE WHEN lower(valid_at) = '2018-01-01' THEN daterange('2018-01-01', '2018-01-05')
|
||||
SET valid_at = CASE WHEN lower(valid_at) = '2018-01-01' THEN daterange('2018-01-01', '2018-01-05')
|
||||
WHEN lower(valid_at) = '2018-02-01' THEN daterange('2018-01-05', '2018-03-01') END
|
||||
WHERE id = '[6,7)';
|
||||
WHERE id = '[6,7)';
|
||||
ERROR: update or delete on table "temporal_rng" violates RESTRICT setting of foreign key constraint "temporal_fk_rng2rng_fk" on table "temporal_fk_rng2rng"
|
||||
DETAIL: Key (id, valid_at)=([6,7), [2018-01-01,2018-02-01)) is referenced from table "temporal_fk_rng2rng".
|
||||
-- a PK update that fails because both are referenced (even before commit):
|
||||
@ -1773,13 +1775,13 @@ DETAIL: Key (id, valid_at)=([5,6), [2018-01-01,2018-02-01)) is referenced from
|
||||
ROLLBACK;
|
||||
-- changing the scalar part fails:
|
||||
UPDATE temporal_rng SET id = '[7,8)'
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
ERROR: update or delete on table "temporal_rng" violates RESTRICT setting of foreign key constraint "temporal_fk_rng2rng_fk" on table "temporal_fk_rng2rng"
|
||||
DETAIL: Key (id, valid_at)=([5,6), [2018-01-01,2018-02-01)) is referenced from table "temporal_fk_rng2rng".
|
||||
-- then delete the objecting FK record and the same PK update succeeds:
|
||||
DELETE FROM temporal_fk_rng2rng WHERE id = '[3,4)';
|
||||
UPDATE temporal_rng SET valid_at = daterange('2016-01-01', '2016-02-01')
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
--
|
||||
-- test FK referenced deletes NO ACTION
|
||||
--
|
||||
@ -1797,7 +1799,8 @@ DELETE FROM temporal_rng WHERE id = '[5,6)';
|
||||
INSERT INTO temporal_rng (id, valid_at) VALUES
|
||||
('[5,6)', daterange('2018-01-01', '2018-02-01')),
|
||||
('[5,6)', daterange('2018-02-01', '2018-03-01'));
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id) VALUES ('[3,4)', daterange('2018-01-05', '2018-01-10'), '[5,6)');
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id) VALUES
|
||||
('[3,4)', daterange('2018-01-05', '2018-01-10'), '[5,6)');
|
||||
DELETE FROM temporal_rng WHERE id = '[5,6)' AND valid_at = daterange('2018-02-01', '2018-03-01');
|
||||
-- a PK delete that fails because both are referenced:
|
||||
DELETE FROM temporal_rng WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
@ -1832,7 +1835,8 @@ DELETE FROM temporal_rng WHERE id = '[5,6)';
|
||||
INSERT INTO temporal_rng (id, valid_at) VALUES
|
||||
('[5,6)', daterange('2018-01-01', '2018-02-01')),
|
||||
('[5,6)', daterange('2018-02-01', '2018-03-01'));
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id) VALUES ('[3,4)', daterange('2018-01-05', '2018-01-10'), '[5,6)');
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id) VALUES
|
||||
('[3,4)', daterange('2018-01-05', '2018-01-10'), '[5,6)');
|
||||
DELETE FROM temporal_rng WHERE id = '[5,6)' AND valid_at = daterange('2018-02-01', '2018-03-01');
|
||||
-- a PK delete that fails because both are referenced (even before commit):
|
||||
BEGIN;
|
||||
@ -2178,9 +2182,10 @@ DELETE FROM temporal_mltrng WHERE id = '[5,6)';
|
||||
INSERT INTO temporal_mltrng (id, valid_at) VALUES
|
||||
('[5,6)', datemultirange(daterange('2018-01-01', '2018-02-01'))),
|
||||
('[5,6)', datemultirange(daterange('2018-02-01', '2018-03-01')));
|
||||
INSERT INTO temporal_fk_mltrng2mltrng (id, valid_at, parent_id) VALUES ('[3,4)', datemultirange(daterange('2018-01-05', '2018-01-10')), '[5,6)');
|
||||
INSERT INTO temporal_fk_mltrng2mltrng (id, valid_at, parent_id) VALUES
|
||||
('[3,4)', datemultirange(daterange('2018-01-05', '2018-01-10')), '[5,6)');
|
||||
UPDATE temporal_mltrng SET valid_at = datemultirange(daterange('2016-02-01', '2016-03-01'))
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-02-01', '2018-03-01'));
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-02-01', '2018-03-01'));
|
||||
-- A PK update sliding the edge between two referenced rows:
|
||||
INSERT INTO temporal_mltrng (id, valid_at) VALUES
|
||||
('[6,7)', datemultirange(daterange('2018-01-01', '2018-02-01'))),
|
||||
@ -2188,12 +2193,12 @@ INSERT INTO temporal_mltrng (id, valid_at) VALUES
|
||||
INSERT INTO temporal_fk_mltrng2mltrng (id, valid_at, parent_id) VALUES
|
||||
('[4,5)', datemultirange(daterange('2018-01-15', '2018-02-15')), '[6,7)');
|
||||
UPDATE temporal_mltrng
|
||||
SET valid_at = CASE WHEN lower(valid_at) = '2018-01-01' THEN datemultirange(daterange('2018-01-01', '2018-01-05'))
|
||||
SET valid_at = CASE WHEN lower(valid_at) = '2018-01-01' THEN datemultirange(daterange('2018-01-01', '2018-01-05'))
|
||||
WHEN lower(valid_at) = '2018-02-01' THEN datemultirange(daterange('2018-01-05', '2018-03-01')) END
|
||||
WHERE id = '[6,7)';
|
||||
WHERE id = '[6,7)';
|
||||
-- a PK update that fails because both are referenced:
|
||||
UPDATE temporal_mltrng SET valid_at = datemultirange(daterange('2016-01-01', '2016-02-01'))
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-01-01', '2018-02-01'));
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-01-01', '2018-02-01'));
|
||||
ERROR: update or delete on table "temporal_mltrng" violates foreign key constraint "temporal_fk_mltrng2mltrng_fk" on table "temporal_fk_mltrng2mltrng"
|
||||
DETAIL: Key (id, valid_at)=([5,6), {[2018-01-01,2018-02-01)}) is still referenced from table "temporal_fk_mltrng2mltrng".
|
||||
-- a PK update that fails because both are referenced, but not 'til commit:
|
||||
@ -2208,7 +2213,7 @@ ERROR: update or delete on table "temporal_mltrng" violates foreign key constra
|
||||
DETAIL: Key (id, valid_at)=([5,6), {[2018-01-01,2018-02-01)}) is still referenced from table "temporal_fk_mltrng2mltrng".
|
||||
-- changing the scalar part fails:
|
||||
UPDATE temporal_mltrng SET id = '[7,8)'
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-01-01', '2018-02-01'));
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-01-01', '2018-02-01'));
|
||||
ERROR: update or delete on table "temporal_mltrng" violates foreign key constraint "temporal_fk_mltrng2mltrng_fk" on table "temporal_fk_mltrng2mltrng"
|
||||
DETAIL: Key (id, valid_at)=([5,6), {[2018-01-01,2018-02-01)}) is still referenced from table "temporal_fk_mltrng2mltrng".
|
||||
--
|
||||
@ -2230,9 +2235,10 @@ DELETE FROM temporal_mltrng WHERE id = '[5,6)';
|
||||
INSERT INTO temporal_mltrng (id, valid_at) VALUES
|
||||
('[5,6)', datemultirange(daterange('2018-01-01', '2018-02-01'))),
|
||||
('[5,6)', datemultirange(daterange('2018-02-01', '2018-03-01')));
|
||||
INSERT INTO temporal_fk_mltrng2mltrng (id, valid_at, parent_id) VALUES ('[3,4)', datemultirange(daterange('2018-01-05', '2018-01-10')), '[5,6)');
|
||||
INSERT INTO temporal_fk_mltrng2mltrng (id, valid_at, parent_id) VALUES
|
||||
('[3,4)', datemultirange(daterange('2018-01-05', '2018-01-10')), '[5,6)');
|
||||
UPDATE temporal_mltrng SET valid_at = datemultirange(daterange('2016-02-01', '2016-03-01'))
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-02-01', '2018-03-01'));
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-02-01', '2018-03-01'));
|
||||
-- A PK update sliding the edge between two referenced rows:
|
||||
INSERT INTO temporal_mltrng (id, valid_at) VALUES
|
||||
('[6,7)', datemultirange(daterange('2018-01-01', '2018-02-01'))),
|
||||
@ -2240,9 +2246,9 @@ INSERT INTO temporal_mltrng (id, valid_at) VALUES
|
||||
INSERT INTO temporal_fk_mltrng2mltrng (id, valid_at, parent_id) VALUES
|
||||
('[4,5)', datemultirange(daterange('2018-01-15', '2018-02-15')), '[6,7)');
|
||||
UPDATE temporal_mltrng
|
||||
SET valid_at = CASE WHEN lower(valid_at) = '2018-01-01' THEN datemultirange(daterange('2018-01-01', '2018-01-05'))
|
||||
SET valid_at = CASE WHEN lower(valid_at) = '2018-01-01' THEN datemultirange(daterange('2018-01-01', '2018-01-05'))
|
||||
WHEN lower(valid_at) = '2018-02-01' THEN datemultirange(daterange('2018-01-05', '2018-03-01')) END
|
||||
WHERE id = '[6,7)';
|
||||
WHERE id = '[6,7)';
|
||||
ERROR: update or delete on table "temporal_mltrng" violates RESTRICT setting of foreign key constraint "temporal_fk_mltrng2mltrng_fk" on table "temporal_fk_mltrng2mltrng"
|
||||
DETAIL: Key (id, valid_at)=([6,7), {[2018-01-01,2018-02-01)}) is referenced from table "temporal_fk_mltrng2mltrng".
|
||||
-- a PK update that fails because both are referenced (even before commit):
|
||||
@ -2257,7 +2263,7 @@ DETAIL: Key (id, valid_at)=([5,6), {[2018-01-01,2018-02-01)}) is referenced fro
|
||||
ROLLBACK;
|
||||
-- changing the scalar part fails:
|
||||
UPDATE temporal_mltrng SET id = '[7,8)'
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-01-01', '2018-02-01'));
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-01-01', '2018-02-01'));
|
||||
ERROR: update or delete on table "temporal_mltrng" violates RESTRICT setting of foreign key constraint "temporal_fk_mltrng2mltrng_fk" on table "temporal_fk_mltrng2mltrng"
|
||||
DETAIL: Key (id, valid_at)=([5,6), {[2018-01-01,2018-02-01)}) is referenced from table "temporal_fk_mltrng2mltrng".
|
||||
--
|
||||
|
@ -1235,9 +1235,10 @@ DELETE FROM temporal_rng WHERE id = '[5,6)';
|
||||
INSERT INTO temporal_rng (id, valid_at) VALUES
|
||||
('[5,6)', daterange('2018-01-01', '2018-02-01')),
|
||||
('[5,6)', daterange('2018-02-01', '2018-03-01'));
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id) VALUES ('[3,4)', daterange('2018-01-05', '2018-01-10'), '[5,6)');
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id)
|
||||
VALUES ('[3,4)', daterange('2018-01-05', '2018-01-10'), '[5,6)');
|
||||
UPDATE temporal_rng SET valid_at = daterange('2016-02-01', '2016-03-01')
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-02-01', '2018-03-01');
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-02-01', '2018-03-01');
|
||||
-- A PK update sliding the edge between two referenced rows:
|
||||
INSERT INTO temporal_rng (id, valid_at) VALUES
|
||||
('[6,7)', daterange('2018-01-01', '2018-02-01')),
|
||||
@ -1245,12 +1246,12 @@ INSERT INTO temporal_rng (id, valid_at) VALUES
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id) VALUES
|
||||
('[4,5)', daterange('2018-01-15', '2018-02-15'), '[6,7)');
|
||||
UPDATE temporal_rng
|
||||
SET valid_at = CASE WHEN lower(valid_at) = '2018-01-01' THEN daterange('2018-01-01', '2018-01-05')
|
||||
SET valid_at = CASE WHEN lower(valid_at) = '2018-01-01' THEN daterange('2018-01-01', '2018-01-05')
|
||||
WHEN lower(valid_at) = '2018-02-01' THEN daterange('2018-01-05', '2018-03-01') END
|
||||
WHERE id = '[6,7)';
|
||||
WHERE id = '[6,7)';
|
||||
-- a PK update that fails because both are referenced:
|
||||
UPDATE temporal_rng SET valid_at = daterange('2016-01-01', '2016-02-01')
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
-- a PK update that fails because both are referenced, but not 'til commit:
|
||||
BEGIN;
|
||||
ALTER TABLE temporal_fk_rng2rng
|
||||
@ -1262,11 +1263,11 @@ BEGIN;
|
||||
COMMIT;
|
||||
-- changing the scalar part fails:
|
||||
UPDATE temporal_rng SET id = '[7,8)'
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
-- then delete the objecting FK record and the same PK update succeeds:
|
||||
DELETE FROM temporal_fk_rng2rng WHERE id = '[3,4)';
|
||||
UPDATE temporal_rng SET valid_at = daterange('2016-01-01', '2016-02-01')
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
|
||||
--
|
||||
-- test FK referenced updates RESTRICT
|
||||
@ -1288,9 +1289,10 @@ DELETE FROM temporal_rng WHERE id = '[5,6)';
|
||||
INSERT INTO temporal_rng (id, valid_at) VALUES
|
||||
('[5,6)', daterange('2018-01-01', '2018-02-01')),
|
||||
('[5,6)', daterange('2018-02-01', '2018-03-01'));
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id) VALUES ('[3,4)', daterange('2018-01-05', '2018-01-10'), '[5,6)');
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id) VALUES
|
||||
('[3,4)', daterange('2018-01-05', '2018-01-10'), '[5,6)');
|
||||
UPDATE temporal_rng SET valid_at = daterange('2016-02-01', '2016-03-01')
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-02-01', '2018-03-01');
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-02-01', '2018-03-01');
|
||||
-- A PK update sliding the edge between two referenced rows:
|
||||
INSERT INTO temporal_rng (id, valid_at) VALUES
|
||||
('[6,7)', daterange('2018-01-01', '2018-02-01')),
|
||||
@ -1298,9 +1300,9 @@ INSERT INTO temporal_rng (id, valid_at) VALUES
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id) VALUES
|
||||
('[4,5)', daterange('2018-01-15', '2018-02-15'), '[6,7)');
|
||||
UPDATE temporal_rng
|
||||
SET valid_at = CASE WHEN lower(valid_at) = '2018-01-01' THEN daterange('2018-01-01', '2018-01-05')
|
||||
SET valid_at = CASE WHEN lower(valid_at) = '2018-01-01' THEN daterange('2018-01-01', '2018-01-05')
|
||||
WHEN lower(valid_at) = '2018-02-01' THEN daterange('2018-01-05', '2018-03-01') END
|
||||
WHERE id = '[6,7)';
|
||||
WHERE id = '[6,7)';
|
||||
-- a PK update that fails because both are referenced (even before commit):
|
||||
BEGIN;
|
||||
ALTER TABLE temporal_fk_rng2rng
|
||||
@ -1311,11 +1313,11 @@ BEGIN;
|
||||
ROLLBACK;
|
||||
-- changing the scalar part fails:
|
||||
UPDATE temporal_rng SET id = '[7,8)'
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
-- then delete the objecting FK record and the same PK update succeeds:
|
||||
DELETE FROM temporal_fk_rng2rng WHERE id = '[3,4)';
|
||||
UPDATE temporal_rng SET valid_at = daterange('2016-01-01', '2016-02-01')
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
|
||||
--
|
||||
-- test FK referenced deletes NO ACTION
|
||||
@ -1335,7 +1337,8 @@ DELETE FROM temporal_rng WHERE id = '[5,6)';
|
||||
INSERT INTO temporal_rng (id, valid_at) VALUES
|
||||
('[5,6)', daterange('2018-01-01', '2018-02-01')),
|
||||
('[5,6)', daterange('2018-02-01', '2018-03-01'));
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id) VALUES ('[3,4)', daterange('2018-01-05', '2018-01-10'), '[5,6)');
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id) VALUES
|
||||
('[3,4)', daterange('2018-01-05', '2018-01-10'), '[5,6)');
|
||||
DELETE FROM temporal_rng WHERE id = '[5,6)' AND valid_at = daterange('2018-02-01', '2018-03-01');
|
||||
-- a PK delete that fails because both are referenced:
|
||||
DELETE FROM temporal_rng WHERE id = '[5,6)' AND valid_at = daterange('2018-01-01', '2018-02-01');
|
||||
@ -1369,7 +1372,8 @@ DELETE FROM temporal_rng WHERE id = '[5,6)';
|
||||
INSERT INTO temporal_rng (id, valid_at) VALUES
|
||||
('[5,6)', daterange('2018-01-01', '2018-02-01')),
|
||||
('[5,6)', daterange('2018-02-01', '2018-03-01'));
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id) VALUES ('[3,4)', daterange('2018-01-05', '2018-01-10'), '[5,6)');
|
||||
INSERT INTO temporal_fk_rng2rng (id, valid_at, parent_id) VALUES
|
||||
('[3,4)', daterange('2018-01-05', '2018-01-10'), '[5,6)');
|
||||
DELETE FROM temporal_rng WHERE id = '[5,6)' AND valid_at = daterange('2018-02-01', '2018-03-01');
|
||||
-- a PK delete that fails because both are referenced (even before commit):
|
||||
BEGIN;
|
||||
@ -1692,9 +1696,10 @@ DELETE FROM temporal_mltrng WHERE id = '[5,6)';
|
||||
INSERT INTO temporal_mltrng (id, valid_at) VALUES
|
||||
('[5,6)', datemultirange(daterange('2018-01-01', '2018-02-01'))),
|
||||
('[5,6)', datemultirange(daterange('2018-02-01', '2018-03-01')));
|
||||
INSERT INTO temporal_fk_mltrng2mltrng (id, valid_at, parent_id) VALUES ('[3,4)', datemultirange(daterange('2018-01-05', '2018-01-10')), '[5,6)');
|
||||
INSERT INTO temporal_fk_mltrng2mltrng (id, valid_at, parent_id) VALUES
|
||||
('[3,4)', datemultirange(daterange('2018-01-05', '2018-01-10')), '[5,6)');
|
||||
UPDATE temporal_mltrng SET valid_at = datemultirange(daterange('2016-02-01', '2016-03-01'))
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-02-01', '2018-03-01'));
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-02-01', '2018-03-01'));
|
||||
-- A PK update sliding the edge between two referenced rows:
|
||||
INSERT INTO temporal_mltrng (id, valid_at) VALUES
|
||||
('[6,7)', datemultirange(daterange('2018-01-01', '2018-02-01'))),
|
||||
@ -1702,12 +1707,12 @@ INSERT INTO temporal_mltrng (id, valid_at) VALUES
|
||||
INSERT INTO temporal_fk_mltrng2mltrng (id, valid_at, parent_id) VALUES
|
||||
('[4,5)', datemultirange(daterange('2018-01-15', '2018-02-15')), '[6,7)');
|
||||
UPDATE temporal_mltrng
|
||||
SET valid_at = CASE WHEN lower(valid_at) = '2018-01-01' THEN datemultirange(daterange('2018-01-01', '2018-01-05'))
|
||||
SET valid_at = CASE WHEN lower(valid_at) = '2018-01-01' THEN datemultirange(daterange('2018-01-01', '2018-01-05'))
|
||||
WHEN lower(valid_at) = '2018-02-01' THEN datemultirange(daterange('2018-01-05', '2018-03-01')) END
|
||||
WHERE id = '[6,7)';
|
||||
WHERE id = '[6,7)';
|
||||
-- a PK update that fails because both are referenced:
|
||||
UPDATE temporal_mltrng SET valid_at = datemultirange(daterange('2016-01-01', '2016-02-01'))
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-01-01', '2018-02-01'));
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-01-01', '2018-02-01'));
|
||||
-- a PK update that fails because both are referenced, but not 'til commit:
|
||||
BEGIN;
|
||||
ALTER TABLE temporal_fk_mltrng2mltrng
|
||||
@ -1719,7 +1724,7 @@ BEGIN;
|
||||
COMMIT;
|
||||
-- changing the scalar part fails:
|
||||
UPDATE temporal_mltrng SET id = '[7,8)'
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-01-01', '2018-02-01'));
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-01-01', '2018-02-01'));
|
||||
|
||||
--
|
||||
-- test FK referenced updates RESTRICT
|
||||
@ -1741,9 +1746,10 @@ DELETE FROM temporal_mltrng WHERE id = '[5,6)';
|
||||
INSERT INTO temporal_mltrng (id, valid_at) VALUES
|
||||
('[5,6)', datemultirange(daterange('2018-01-01', '2018-02-01'))),
|
||||
('[5,6)', datemultirange(daterange('2018-02-01', '2018-03-01')));
|
||||
INSERT INTO temporal_fk_mltrng2mltrng (id, valid_at, parent_id) VALUES ('[3,4)', datemultirange(daterange('2018-01-05', '2018-01-10')), '[5,6)');
|
||||
INSERT INTO temporal_fk_mltrng2mltrng (id, valid_at, parent_id) VALUES
|
||||
('[3,4)', datemultirange(daterange('2018-01-05', '2018-01-10')), '[5,6)');
|
||||
UPDATE temporal_mltrng SET valid_at = datemultirange(daterange('2016-02-01', '2016-03-01'))
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-02-01', '2018-03-01'));
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-02-01', '2018-03-01'));
|
||||
-- A PK update sliding the edge between two referenced rows:
|
||||
INSERT INTO temporal_mltrng (id, valid_at) VALUES
|
||||
('[6,7)', datemultirange(daterange('2018-01-01', '2018-02-01'))),
|
||||
@ -1751,9 +1757,9 @@ INSERT INTO temporal_mltrng (id, valid_at) VALUES
|
||||
INSERT INTO temporal_fk_mltrng2mltrng (id, valid_at, parent_id) VALUES
|
||||
('[4,5)', datemultirange(daterange('2018-01-15', '2018-02-15')), '[6,7)');
|
||||
UPDATE temporal_mltrng
|
||||
SET valid_at = CASE WHEN lower(valid_at) = '2018-01-01' THEN datemultirange(daterange('2018-01-01', '2018-01-05'))
|
||||
SET valid_at = CASE WHEN lower(valid_at) = '2018-01-01' THEN datemultirange(daterange('2018-01-01', '2018-01-05'))
|
||||
WHEN lower(valid_at) = '2018-02-01' THEN datemultirange(daterange('2018-01-05', '2018-03-01')) END
|
||||
WHERE id = '[6,7)';
|
||||
WHERE id = '[6,7)';
|
||||
-- a PK update that fails because both are referenced (even before commit):
|
||||
BEGIN;
|
||||
ALTER TABLE temporal_fk_mltrng2mltrng
|
||||
@ -1765,7 +1771,7 @@ BEGIN;
|
||||
ROLLBACK;
|
||||
-- changing the scalar part fails:
|
||||
UPDATE temporal_mltrng SET id = '[7,8)'
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-01-01', '2018-02-01'));
|
||||
WHERE id = '[5,6)' AND valid_at = datemultirange(daterange('2018-01-01', '2018-02-01'));
|
||||
|
||||
--
|
||||
-- test FK referenced deletes NO ACTION
|
||||
|
Loading…
x
Reference in New Issue
Block a user