view schema/updates/1437/01.historicise_fairway_dimensions.sql @ 5560:f2204f91d286

Join the log lines of imports to the log exports to recover data from them. Used in SR export to extract information that where in the meta json but now are only found in the log.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 09 Feb 2022 18:34:40 +0100
parents 1cb5fca140e2
children
line wrap: on
line source

-- Drop trigger first to avoid execution during following operations
DROP TRIGGER fairway_dimensions_area_unique ON waterway.fairway_dimensions;

ALTER TABLE waterway.fairway_dimensions
    ADD validity tstzrange NOT NULL DEFAULT tstzrange(current_timestamp, NULL)
        CHECK (NOT isempty(validity));

-- Assume existing entries have been valid since last accepted import
WITH imps AS (
    SELECT changed, CAST(summary AS jsonb)->'fd-area' AS fd_area
        FROM import.imports
        WHERE kind = 'fd' AND state = 'accepted'
)
UPDATE waterway.fairway_dimensions fd SET validity = tstzrange(
    COALESCE(
        (SELECT max(changed)
            FROM imps
            WHERE fd.id IN(
                SELECT id
                FROM jsonb_to_recordset(fd_area)
                    AS fd_area (id bigint, lat numeric, lon numeric))),
        current_timestamp),
    NULL);

CREATE CONSTRAINT TRIGGER fairway_dimensions_area_unique
    AFTER INSERT OR UPDATE OF area, validity, staging_done
    ON waterway.fairway_dimensions
    FOR EACH ROW EXECUTE FUNCTION prevent_st_equals(
        'area', 'validity WITH &&', 'staging_done');

CREATE INDEX fairway_dimensions_validity
    ON waterway.fairway_dimensions USING GiST (validity);