openmaptiles/layers/mountain_peak/update_peak_point.sql
2020-06-17 19:58:12 +02:00

34 lines
969 B
PL/PgSQL

DROP TRIGGER IF EXISTS trigger_update_point ON osm_peak_point;
-- etldoc: osm_peak_point -> osm_peak_point
-- etldoc: osm_peak_point -> osm_peak_point
CREATE OR REPLACE FUNCTION update_osm_peak_point(new_osm_id bigint) RETURNS void AS
$$
UPDATE osm_peak_point
SET tags = update_tags(tags, geometry)
WHERE (new_osm_id IS NULL OR osm_id = new_osm_id)
AND COALESCE(tags -> 'name:latin', tags -> 'name:nonlatin', tags -> 'name_int') IS NULL
AND tags != update_tags(tags, geometry)
$$ LANGUAGE SQL;
SELECT update_osm_peak_point(NULL);
-- Handle updates
CREATE SCHEMA IF NOT EXISTS mountain_peak_point;
CREATE OR REPLACE FUNCTION mountain_peak_point.update() RETURNS trigger AS
$$
BEGIN
PERFORM update_osm_peak_point(new.osm_id);
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE CONSTRAINT TRIGGER trigger_update_point
AFTER INSERT OR UPDATE
ON osm_peak_point
INITIALLY DEFERRED
FOR EACH ROW
EXECUTE PROCEDURE mountain_peak_point.update();