index ea5591a3b38fd9ba6e000f5338dee15de2318b07..9fb20395a6ae5f9e9a62f9a1ab1fc8479ad18fbb 100644 (file)
-- test PK inserts
--
-- okay:
-INSERT INTO temporal_rng VALUES ('[1,1]', daterange('2018年01月02日', '2018年02月03日'));
-INSERT INTO temporal_rng VALUES ('[1,1]', daterange('2018年03月03日', '2018年04月04日'));
-INSERT INTO temporal_rng VALUES ('[2,2]', daterange('2018年01月01日', '2018年01月05日'));
-INSERT INTO temporal_rng VALUES ('[3,3]', daterange('2018年01月01日', NULL));
+INSERT INTO temporal_rng (id, valid_at) VALUES ('[1,2)', daterange('2018年01月02日', '2018年02月03日'));
+INSERT INTO temporal_rng (id, valid_at) VALUES ('[1,2)', daterange('2018年03月03日', '2018年04月04日'));
+INSERT INTO temporal_rng (id, valid_at) VALUES ('[2,3)', daterange('2018年01月01日', '2018年01月05日'));
+INSERT INTO temporal_rng (id, valid_at) VALUES ('[3,4)', daterange('2018年01月01日', NULL));
-- should fail:
-INSERT INTO temporal_rng VALUES ('[1,1]', daterange('2018年01月01日', '2018年01月05日'));
+INSERT INTO temporal_rng (id, valid_at) VALUES ('[1,2)', daterange('2018年01月01日', '2018年01月05日'));
ERROR: conflicting key value violates exclusion constraint "temporal_rng_pk"
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日)).
-INSERT INTO temporal_rng VALUES (NULL, daterange('2018年01月01日', '2018年01月05日'));
+INSERT INTO temporal_rng (id, valid_at) VALUES (NULL, daterange('2018年01月01日', '2018年01月05日'));
ERROR: null value in column "id" of relation "temporal_rng" violates not-null constraint
DETAIL: Failing row contains (null, [2018年01月01日,2018年01月05日)).
-INSERT INTO temporal_rng VALUES ('[3,3]', NULL);
+INSERT INTO temporal_rng (id, valid_at) VALUES ('[3,4)', NULL);
ERROR: null value in column "valid_at" of relation "temporal_rng" violates not-null constraint
DETAIL: Failing row contains ([3,4), null).
--
);
INSERT INTO temporal3 (id, valid_at, id2, name)
VALUES
- ('[1,1]', daterange('2000年01月01日', '2010年01月01日'), '[7,7]', 'foo'),
- ('[2,2]', daterange('2000年01月01日', '2010年01月01日'), '[9,9]', 'bar')
+ ('[1,2)', daterange('2000年01月01日', '2010年01月01日'), '[7,8)', 'foo'),
+ ('[2,3)', daterange('2000年01月01日', '2010年01月01日'), '[9,10)', 'bar')
;
DROP TABLE temporal3;
--
name text,
CONSTRAINT temporal_paritioned_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS)
) PARTITION BY LIST (id);
-CREATE TABLE tp1 PARTITION OF temporal_partitioned FOR VALUES IN ('[1,1]', '[2,2]');
-CREATE TABLE tp2 PARTITION OF temporal_partitioned FOR VALUES IN ('[3,3]', '[4,4]');
-INSERT INTO temporal_partitioned VALUES
- ('[1,1]', daterange('2000年01月01日', '2000年02月01日'), 'one'),
- ('[1,1]', daterange('2000年02月01日', '2000年03月01日'), 'one'),
- ('[3,3]', daterange('2000年01月01日', '2010年01月01日'), 'three');
+CREATE TABLE tp1 PARTITION OF temporal_partitioned FOR VALUES IN ('[1,2)', '[2,3)');
+CREATE TABLE tp2 PARTITION OF temporal_partitioned FOR VALUES IN ('[3,4)', '[4,5)');
+INSERT INTO temporal_partitioned (id, valid_at, name) VALUES
+ ('[1,2)', daterange('2000年01月01日', '2000年02月01日'), 'one'),
+ ('[1,2)', daterange('2000年02月01日', '2000年03月01日'), 'one'),
+ ('[3,4)', daterange('2000年01月01日', '2010年01月01日'), 'three');
SELECT * FROM temporal_partitioned ORDER BY id, valid_at;
id | valid_at | name
-------+-------------------------+-------
name text,
CONSTRAINT temporal_paritioned_uq UNIQUE (id, valid_at WITHOUT OVERLAPS)
) PARTITION BY LIST (id);
-CREATE TABLE tp1 PARTITION OF temporal_partitioned FOR VALUES IN ('[1,1]', '[2,2]');
-CREATE TABLE tp2 PARTITION OF temporal_partitioned FOR VALUES IN ('[3,3]', '[4,4]');
-INSERT INTO temporal_partitioned VALUES
- ('[1,1]', daterange('2000年01月01日', '2000年02月01日'), 'one'),
- ('[1,1]', daterange('2000年02月01日', '2000年03月01日'), 'one'),
- ('[3,3]', daterange('2000年01月01日', '2010年01月01日'), 'three');
+CREATE TABLE tp1 PARTITION OF temporal_partitioned FOR VALUES IN ('[1,2)', '[2,3)');
+CREATE TABLE tp2 PARTITION OF temporal_partitioned FOR VALUES IN ('[3,4)', '[4,5)');
+INSERT INTO temporal_partitioned (id, valid_at, name) VALUES
+ ('[1,2)', daterange('2000年01月01日', '2000年02月01日'), 'one'),
+ ('[1,2)', daterange('2000年02月01日', '2000年03月01日'), 'one'),
+ ('[3,4)', daterange('2000年01月01日', '2010年01月01日'), 'three');
SELECT * FROM temporal_partitioned ORDER BY id, valid_at;
id | valid_at | name
-------+-------------------------+-------
index bb8b85aa25f4853c055cc7d36bbf54a96f07c71d..b5e77168f54f3fbfcc2cab5f4cdcca416fc8ccc9 100644 (file)
--
-- okay:
-INSERT INTO temporal_rng VALUES ('[1,1]', daterange('2018年01月02日', '2018年02月03日'));
-INSERT INTO temporal_rng VALUES ('[1,1]', daterange('2018年03月03日', '2018年04月04日'));
-INSERT INTO temporal_rng VALUES ('[2,2]', daterange('2018年01月01日', '2018年01月05日'));
-INSERT INTO temporal_rng VALUES ('[3,3]', daterange('2018年01月01日', NULL));
+INSERT INTO temporal_rng (id, valid_at) VALUES ('[1,2)', daterange('2018年01月02日', '2018年02月03日'));
+INSERT INTO temporal_rng (id, valid_at) VALUES ('[1,2)', daterange('2018年03月03日', '2018年04月04日'));
+INSERT INTO temporal_rng (id, valid_at) VALUES ('[2,3)', daterange('2018年01月01日', '2018年01月05日'));
+INSERT INTO temporal_rng (id, valid_at) VALUES ('[3,4)', daterange('2018年01月01日', NULL));
-- should fail:
-INSERT INTO temporal_rng VALUES ('[1,1]', daterange('2018年01月01日', '2018年01月05日'));
-INSERT INTO temporal_rng VALUES (NULL, daterange('2018年01月01日', '2018年01月05日'));
-INSERT INTO temporal_rng VALUES ('[3,3]', NULL);
+INSERT INTO temporal_rng (id, valid_at) VALUES ('[1,2)', daterange('2018年01月01日', '2018年01月05日'));
+INSERT INTO temporal_rng (id, valid_at) VALUES (NULL, daterange('2018年01月01日', '2018年01月05日'));
+INSERT INTO temporal_rng (id, valid_at) VALUES ('[3,4)', NULL);
--
-- test a range with both a PK and a UNIQUE constraint
);
INSERT INTO temporal3 (id, valid_at, id2, name)
VALUES
- ('[1,1]', daterange('2000年01月01日', '2010年01月01日'), '[7,7]', 'foo'),
- ('[2,2]', daterange('2000年01月01日', '2010年01月01日'), '[9,9]', 'bar')
+ ('[1,2)', daterange('2000年01月01日', '2010年01月01日'), '[7,8)', 'foo'),
+ ('[2,3)', daterange('2000年01月01日', '2010年01月01日'), '[9,10)', 'bar')
;
DROP TABLE temporal3;
name text,
CONSTRAINT temporal_paritioned_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS)
) PARTITION BY LIST (id);
-CREATE TABLE tp1 PARTITION OF temporal_partitioned FOR VALUES IN ('[1,1]', '[2,2]');
-CREATE TABLE tp2 PARTITION OF temporal_partitioned FOR VALUES IN ('[3,3]', '[4,4]');
-INSERT INTO temporal_partitioned VALUES
- ('[1,1]', daterange('2000年01月01日', '2000年02月01日'), 'one'),
- ('[1,1]', daterange('2000年02月01日', '2000年03月01日'), 'one'),
- ('[3,3]', daterange('2000年01月01日', '2010年01月01日'), 'three');
+CREATE TABLE tp1 PARTITION OF temporal_partitioned FOR VALUES IN ('[1,2)', '[2,3)');
+CREATE TABLE tp2 PARTITION OF temporal_partitioned FOR VALUES IN ('[3,4)', '[4,5)');
+INSERT INTO temporal_partitioned (id, valid_at, name) VALUES
+ ('[1,2)', daterange('2000年01月01日', '2000年02月01日'), 'one'),
+ ('[1,2)', daterange('2000年02月01日', '2000年03月01日'), 'one'),
+ ('[3,4)', daterange('2000年01月01日', '2010年01月01日'), 'three');
SELECT * FROM temporal_partitioned ORDER BY id, valid_at;
SELECT * FROM tp1 ORDER BY id, valid_at;
SELECT * FROM tp2 ORDER BY id, valid_at;
name text,
CONSTRAINT temporal_paritioned_uq UNIQUE (id, valid_at WITHOUT OVERLAPS)
) PARTITION BY LIST (id);
-CREATE TABLE tp1 PARTITION OF temporal_partitioned FOR VALUES IN ('[1,1]', '[2,2]');
-CREATE TABLE tp2 PARTITION OF temporal_partitioned FOR VALUES IN ('[3,3]', '[4,4]');
-INSERT INTO temporal_partitioned VALUES
- ('[1,1]', daterange('2000年01月01日', '2000年02月01日'), 'one'),
- ('[1,1]', daterange('2000年02月01日', '2000年03月01日'), 'one'),
- ('[3,3]', daterange('2000年01月01日', '2010年01月01日'), 'three');
+CREATE TABLE tp1 PARTITION OF temporal_partitioned FOR VALUES IN ('[1,2)', '[2,3)');
+CREATE TABLE tp2 PARTITION OF temporal_partitioned FOR VALUES IN ('[3,4)', '[4,5)');
+INSERT INTO temporal_partitioned (id, valid_at, name) VALUES
+ ('[1,2)', daterange('2000年01月01日', '2000年02月01日'), 'one'),
+ ('[1,2)', daterange('2000年02月01日', '2000年03月01日'), 'one'),
+ ('[3,4)', daterange('2000年01月01日', '2010年01月01日'), 'three');
SELECT * FROM temporal_partitioned ORDER BY id, valid_at;
SELECT * FROM tp1 ORDER BY id, valid_at;
SELECT * FROM tp2 ORDER BY id, valid_at;