Вот комит: https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=46a0cd4cefb4d9b462d8cc4df5e7ecdd190bea92
вот пример из него:
CREATE TABLE temporal_rng (
id integer,
valid_at daterange,
CONSTRAINT temporal_rng_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS)
);
INSERT INTO temporal_rng VALUES
(1, '[2000-01-01,2001-01-01)');
INSERT INTO temporal_rng VALUES
(1, '[2001-01-01,2002-01-01)');
INSERT INTO temporal_rng VALUES
(2, '[2000-01-01,2001-01-01)');
-- запрос не пройдёт, так как перекается диапазон дат с первой строкой (для одного и того же id)
INSERT INTO temporal_rng VALUES
(1, '[2000-06-01,2001-01-01)');
Так что скоро это будет возможно без мудрёных хаков