kopia lustrzana https://github.com/openmaptiles/openmaptiles
Refresh osm_park_polygon_dissolve_z4 materialized view after update in update_park_polygon.sql (#1515)
Refresh osm_park_polygon_dissolve_z4 materialized view after update in update_park_polygon.sql.pull/1522/head
rodzic
54e24207a1
commit
f3dbb0a839
|
@ -46,6 +46,8 @@ DROP TRIGGER IF EXISTS update_row ON osm_park_polygon_gen_z7;
|
||||||
DROP TRIGGER IF EXISTS update_row ON osm_park_polygon_gen_z6;
|
DROP TRIGGER IF EXISTS update_row ON osm_park_polygon_gen_z6;
|
||||||
DROP TRIGGER IF EXISTS update_row ON osm_park_polygon_gen_z5;
|
DROP TRIGGER IF EXISTS update_row ON osm_park_polygon_gen_z5;
|
||||||
DROP TRIGGER IF EXISTS update_row ON osm_park_polygon_gen_z4;
|
DROP TRIGGER IF EXISTS update_row ON osm_park_polygon_gen_z4;
|
||||||
|
DROP TRIGGER IF EXISTS tigger_flag ON osm_park_polygon;
|
||||||
|
DROP TRIGGER IF EXISTS tigger_refresh ON park_polygon.updates;
|
||||||
|
|
||||||
-- etldoc: osm_park_polygon -> osm_park_polygon
|
-- etldoc: osm_park_polygon -> osm_park_polygon
|
||||||
-- etldoc: osm_park_polygon_gen_z13 -> osm_park_polygon_gen_z13
|
-- etldoc: osm_park_polygon_gen_z13 -> osm_park_polygon_gen_z13
|
||||||
|
@ -119,6 +121,42 @@ CREATE INDEX IF NOT EXISTS osm_park_polygon_gen_z5_point_geom_idx ON osm_park_po
|
||||||
CREATE INDEX IF NOT EXISTS osm_park_polygon_gen_z4_polygon_geom_idx ON osm_park_polygon_gen_z4 USING gist (geometry);
|
CREATE INDEX IF NOT EXISTS osm_park_polygon_gen_z4_polygon_geom_idx ON osm_park_polygon_gen_z4 USING gist (geometry);
|
||||||
CREATE INDEX IF NOT EXISTS osm_park_polygon_dissolve_z4_polygon_geom_idx ON osm_park_polygon_dissolve_z4 USING gist (geometry);
|
CREATE INDEX IF NOT EXISTS osm_park_polygon_dissolve_z4_polygon_geom_idx ON osm_park_polygon_dissolve_z4 USING gist (geometry);
|
||||||
|
|
||||||
|
CREATE SCHEMA IF NOT EXISTS park_polygon;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS park_polygon.updates
|
||||||
|
(
|
||||||
|
id serial PRIMARY KEY,
|
||||||
|
t text,
|
||||||
|
UNIQUE (t)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION park_polygon.flag() RETURNS trigger AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO park_polygon.updates(t) VALUES ('y') ON CONFLICT(t) DO NOTHING;
|
||||||
|
RETURN NULL;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION park_polygon.refresh() RETURNS trigger AS
|
||||||
|
$$
|
||||||
|
DECLARE
|
||||||
|
t TIMESTAMP WITH TIME ZONE := clock_timestamp();
|
||||||
|
BEGIN
|
||||||
|
RAISE LOG 'Refresh park_polygon';
|
||||||
|
|
||||||
|
-- Analyze tracking and source tables before performing update
|
||||||
|
ANALYZE osm_park_polygon_gen_z4;
|
||||||
|
REFRESH MATERIALIZED VIEW osm_park_polygon_dissolve_z4;
|
||||||
|
|
||||||
|
-- noinspection SqlWithoutWhere
|
||||||
|
DELETE FROM park_polygon.updates;
|
||||||
|
|
||||||
|
RAISE LOG 'Refresh park_polygon done in %', age(clock_timestamp(), t);
|
||||||
|
RETURN NULL;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION update_osm_park_polygon_row()
|
CREATE OR REPLACE FUNCTION update_osm_park_polygon_row()
|
||||||
RETURNS trigger
|
RETURNS trigger
|
||||||
AS
|
AS
|
||||||
|
@ -206,3 +244,15 @@ CREATE TRIGGER update_row
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
EXECUTE PROCEDURE update_osm_park_dissolved_polygon_row();
|
EXECUTE PROCEDURE update_osm_park_dissolved_polygon_row();
|
||||||
|
|
||||||
|
CREATE TRIGGER trigger_flag
|
||||||
|
AFTER INSERT OR UPDATE OR DELETE
|
||||||
|
ON osm_park_polygon_gen_z4
|
||||||
|
FOR EACH STATEMENT
|
||||||
|
EXECUTE PROCEDURE park_polygon.flag();
|
||||||
|
|
||||||
|
CREATE CONSTRAINT TRIGGER trigger_refresh
|
||||||
|
AFTER INSERT
|
||||||
|
ON park_polygon.updates
|
||||||
|
INITIALLY DEFERRED
|
||||||
|
FOR EACH ROW
|
||||||
|
EXECUTE PROCEDURE park_polygon.refresh();
|
||||||
|
|
Ładowanie…
Reference in New Issue