diff schema/gemma.sql @ 3648:0ec5c8ec1e44

Avoid empty validity time ranges An entry which is not valid at any point in time makes no sense. Further, multiple of such entries would violate a UNIQUE constraint. Since an UPDATE now can change validity time ranges, do all the adjustments for that regardles of whether an INSERT or UPDATE happens.
author Tom Gottfried <tom@intevation.de>
date Wed, 12 Jun 2019 18:26:26 +0200
parents 123b9341408e
children 2a079d0a71c1
line wrap: on
line diff
--- a/schema/gemma.sql	Wed Jun 12 18:21:14 2019 +0200
+++ b/schema/gemma.sql	Wed Jun 12 18:26:26 2019 +0200
@@ -280,7 +280,7 @@
         geom geography(POINT, 4326) NOT NULL,
         applicability_from_km int8,
         applicability_to_km int8,
-        validity tstzrange NOT NULL,
+        validity tstzrange NOT NULL CHECK (NOT isempty(validity)),
         zero_point double precision NOT NULL,
         geodref varchar,
         date_info timestamp with time zone NOT NULL,
@@ -288,7 +288,6 @@
         lastupdate timestamp with time zone NOT NULL,
         -- entry removed from external data source (RIS-Index)/historicised:
         erased boolean NOT NULL DEFAULT false,
-        CHECK (erased OR NOT isempty(validity)),
         PRIMARY KEY (location, validity),
         EXCLUDE USING GiST (isrs_astext(location) WITH =, validity WITH &&)
             DEFERRABLE INITIALLY DEFERRED
@@ -489,7 +488,7 @@
     CREATE TABLE bottlenecks (
         id int PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
         bottleneck_id varchar NOT NULL,
-        validity tstzrange NOT NULL,
+        validity tstzrange NOT NULL CHECK (NOT isempty(validity)),
         EXCLUDE USING GiST (bottleneck_id WITH =, validity WITH &&)
             DEFERRABLE INITIALLY DEFERRED,
         gauge_location isrs NOT NULL,
@@ -519,7 +518,6 @@
         date_info timestamp with time zone NOT NULL,
         source_organization varchar NOT NULL,
         erased boolean NOT NULL DEFAULT false,
-        CHECK (erased OR NOT isempty(validity)),
         staging_done boolean NOT NULL DEFAULT false
     )
     -- Allow only one non-erased entry per bottleneck