diff --git a/layers/place/island_polygon_update.sql b/layers/place/island_polygon_update.sql index 57cca41..04c5432 100644 --- a/layers/place/island_polygon_update.sql +++ b/layers/place/island_polygon_update.sql @@ -1,5 +1,5 @@ -- etldoc: osm_island_polygon -> osm_island_polygon -CREATE FUNCTION convert_island_polygon_point() RETURNS VOID AS $$ +CREATE OR REPLACE FUNCTION convert_island_polygon_point() RETURNS VOID AS $$ BEGIN UPDATE osm_island_polygon SET geometry=topoint(geometry) WHERE ST_GeometryType(geometry) <> 'ST_Point'; ANALYZE osm_island_polygon; @@ -10,7 +10,7 @@ SELECT convert_island_polygon_point(); -- Handle updates -CREATE SCHEMA place_island; +CREATE SCHEMA IF NOT EXISTS place_island; CREATE TABLE IF NOT EXISTS place_island.updates(id serial primary key, t text, unique (t)); CREATE OR REPLACE FUNCTION place_island.flag() RETURNS trigger AS $$ @@ -31,6 +31,9 @@ CREATE OR REPLACE FUNCTION place_island.refresh() RETURNS trigger AS $BODY$ language plpgsql; +DROP TRIGGER IF EXISTS trigger_flag ON osm_island_polygon; +DROP TRIGGER IF EXISTS trigger_refresh ON place_island.updates; + CREATE TRIGGER trigger_flag AFTER INSERT OR UPDATE OR DELETE ON osm_island_polygon FOR EACH STATEMENT diff --git a/layers/place/merge_city_rank.sql b/layers/place/merge_city_rank.sql index 78587ab..e7d9276 100644 --- a/layers/place/merge_city_rank.sql +++ b/layers/place/merge_city_rank.sql @@ -2,7 +2,7 @@ CREATE EXTENSION IF NOT EXISTS unaccent; -CREATE FUNCTION update_osm_city_point() RETURNS VOID AS $$ +CREATE OR REPLACE FUNCTION update_osm_city_point() RETURNS VOID AS $$ BEGIN -- Clear OSM key:rank ( https://github.com/openmaptiles/openmaptiles/issues/108 ) @@ -48,7 +48,7 @@ CREATE INDEX IF NOT EXISTS osm_city_point_rank_idx ON osm_city_point("rank"); -- Handle updates -CREATE SCHEMA place_city; +CREATE SCHEMA IF NOT EXISTS place_city; CREATE TABLE IF NOT EXISTS place_city.updates(id serial primary key, t text, unique (t)); CREATE OR REPLACE FUNCTION place_city.flag() RETURNS trigger AS $$ @@ -69,6 +69,9 @@ CREATE OR REPLACE FUNCTION place_city.refresh() RETURNS trigger AS $BODY$ language plpgsql; +DROP TRIGGER IF EXISTS trigger_flag ON osm_city_point; +DROP TRIGGER IF EXISTS trigger_refresh ON place_city.updates; + CREATE TRIGGER trigger_flag AFTER INSERT OR UPDATE OR DELETE ON osm_city_point FOR EACH STATEMENT diff --git a/layers/place/merge_country_rank.sql b/layers/place/merge_country_rank.sql index 95a164a..fbf1d95 100644 --- a/layers/place/merge_country_rank.sql +++ b/layers/place/merge_country_rank.sql @@ -3,7 +3,7 @@ ALTER TABLE osm_country_point DROP CONSTRAINT IF EXISTS osm_country_point_rank_c -- etldoc: ne_10m_admin_0_countries -> osm_country_point -- etldoc: osm_country_point -> osm_country_point -CREATE FUNCTION update_osm_country_point() RETURNS VOID AS $$ +CREATE OR REPLACE FUNCTION update_osm_country_point() RETURNS VOID AS $$ BEGIN WITH important_country_point AS ( @@ -43,7 +43,7 @@ CREATE INDEX IF NOT EXISTS osm_country_point_rank_idx ON osm_country_point("rank -- Handle updates -CREATE SCHEMA place_country; +CREATE SCHEMA IF NOT EXISTS place_country; CREATE TABLE IF NOT EXISTS place_country.updates(id serial primary key, t text, unique (t)); CREATE OR REPLACE FUNCTION place_country.flag() RETURNS trigger AS $$ @@ -64,6 +64,9 @@ CREATE OR REPLACE FUNCTION place_country.refresh() RETURNS trigger AS $BODY$ language plpgsql; +DROP TRIGGER IF EXISTS trigger_flag ON osm_country_point; +DROP TRIGGER IF EXISTS trigger_refresh ON place_country.updates; + CREATE TRIGGER trigger_flag AFTER INSERT OR UPDATE OR DELETE ON osm_country_point FOR EACH STATEMENT diff --git a/layers/place/merge_state_rank.sql b/layers/place/merge_state_rank.sql index d204a21..90c9616 100644 --- a/layers/place/merge_state_rank.sql +++ b/layers/place/merge_state_rank.sql @@ -3,7 +3,7 @@ ALTER TABLE osm_state_point DROP CONSTRAINT IF EXISTS osm_state_point_rank_const -- etldoc: ne_10m_admin_1_states_provinces_shp -> osm_state_point -- etldoc: osm_state_point -> osm_state_point -CREATE FUNCTION update_osm_state_point() RETURNS VOID AS $$ +CREATE OR REPLACE FUNCTION update_osm_state_point() RETURNS VOID AS $$ BEGIN WITH important_state_point AS ( @@ -39,7 +39,7 @@ CREATE INDEX IF NOT EXISTS osm_state_point_rank_idx ON osm_state_point("rank"); -- Handle updates -CREATE SCHEMA place_state; +CREATE SCHEMA IF NOT EXISTS place_state; CREATE TABLE IF NOT EXISTS place_state.updates(id serial primary key, t text, unique (t)); CREATE OR REPLACE FUNCTION place_state.flag() RETURNS trigger AS $$ @@ -60,6 +60,9 @@ CREATE OR REPLACE FUNCTION place_state.refresh() RETURNS trigger AS $BODY$ language plpgsql; +DROP TRIGGER IF EXISTS trigger_flag ON osm_state_point; +DROP TRIGGER IF EXISTS trigger_refresh ON place_state.updates; + CREATE TRIGGER trigger_flag AFTER INSERT OR UPDATE OR DELETE ON osm_state_point FOR EACH STATEMENT diff --git a/layers/poi/poi_polygon_update.sql b/layers/poi/poi_polygon_update.sql index 51259e5..dcd4b3b 100644 --- a/layers/poi/poi_polygon_update.sql +++ b/layers/poi/poi_polygon_update.sql @@ -1,6 +1,6 @@ -- etldoc: osm_poi_polygon -> osm_poi_polygon -CREATE FUNCTION convert_poi_point() RETURNS VOID AS $$ +CREATE OR REPLACE FUNCTION convert_poi_point() RETURNS VOID AS $$ BEGIN UPDATE osm_poi_polygon SET geometry=topoint(geometry) WHERE ST_GeometryType(geometry) <> 'ST_Point'; ANALYZE osm_poi_polygon; @@ -11,7 +11,7 @@ SELECT convert_poi_point(); -- Handle updates -CREATE SCHEMA poi; +CREATE SCHEMA IF NOT EXISTS poi; CREATE TABLE IF NOT EXISTS poi.updates(id serial primary key, t text, unique (t)); CREATE OR REPLACE FUNCTION poi.flag() RETURNS trigger AS $$ @@ -32,6 +32,9 @@ CREATE OR REPLACE FUNCTION poi.refresh() RETURNS trigger AS $BODY$ language plpgsql; +DROP TRIGGER IF EXISTS trigger_flag ON osm_poi_polygon; +DROP TRIGGER IF EXISTS trigger_refresh ON poi.updates; + CREATE TRIGGER trigger_flag AFTER INSERT OR UPDATE OR DELETE ON osm_poi_polygon FOR EACH STATEMENT diff --git a/layers/transportation_name/merge_highways.sql b/layers/transportation_name/merge_highways.sql index 7a81a87..0648acb 100644 --- a/layers/transportation_name/merge_highways.sql +++ b/layers/transportation_name/merge_highways.sql @@ -4,6 +4,11 @@ -- to allow for nice label rendering -- Because this works well for roads that do not have relations as well +DROP MATERIALIZED VIEW IF EXISTS osm_transportation_name_linestring CASCADE; +DROP MATERIALIZED VIEW IF EXISTS osm_transportation_name_linestring_gen1 CASCADE; +DROP MATERIALIZED VIEW IF EXISTS osm_transportation_name_linestring_gen2 CASCADE; +DROP MATERIALIZED VIEW IF EXISTS osm_transportation_name_linestring_gen3 CASCADE; + -- etldoc: osm_highway_linestring -> osm_transportation_name_linestring CREATE MATERIALIZED VIEW osm_transportation_name_linestring AS ( SELECT @@ -58,7 +63,7 @@ CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen3_geometry_idx -- Handle updates -CREATE SCHEMA transportation_name; +CREATE SCHEMA IF NOT EXISTS transportation_name; CREATE TABLE IF NOT EXISTS transportation_name.updates(id serial primary key, t text, unique (t)); CREATE OR REPLACE FUNCTION transportation_name.flag() RETURNS trigger AS $$ @@ -82,6 +87,9 @@ CREATE OR REPLACE FUNCTION transportation_name.refresh() RETURNS trigger AS $BODY$ language plpgsql; +DROP TRIGGER IF EXISTS trigger_flag ON osm_highway_linestring; +DROP TRIGGER IF EXISTS trigger_refresh ON transportation_name.updates; + CREATE TRIGGER trigger_flag AFTER INSERT OR UPDATE OR DELETE ON osm_highway_linestring FOR EACH STATEMENT @@ -91,4 +99,4 @@ CREATE CONSTRAINT TRIGGER trigger_refresh AFTER INSERT ON transportation_name.updates INITIALLY DEFERRED FOR EACH ROW - EXECUTE PROCEDURE transportation_name.refresh(); \ No newline at end of file + EXECUTE PROCEDURE transportation_name.refresh(); diff --git a/layers/water_name/water_lakeline.sql b/layers/water_name/water_lakeline.sql index fc776db..b918f4b 100644 --- a/layers/water_name/water_lakeline.sql +++ b/layers/water_name/water_lakeline.sql @@ -1,6 +1,8 @@ -- etldoc: osm_water_polygon -> osm_water_lakeline -- etldoc: lake_centerline -> osm_water_lakeline +DROP MATERIALIZED VIEW IF EXISTS osm_water_lakeline CASCADE; + CREATE MATERIALIZED VIEW osm_water_lakeline AS ( SELECT wp.osm_id, ll.wkb_geometry AS geometry, @@ -13,7 +15,7 @@ CREATE INDEX IF NOT EXISTS osm_water_lakeline_geometry_idx ON osm_water_lakeline -- Handle updates -CREATE SCHEMA water_lakeline; +CREATE SCHEMA IF NOT EXISTS water_lakeline; CREATE TABLE IF NOT EXISTS water_lakeline.updates(id serial primary key, t text, unique (t)); CREATE OR REPLACE FUNCTION water_lakeline.flag() RETURNS trigger AS $$ @@ -34,6 +36,9 @@ CREATE OR REPLACE FUNCTION water_lakeline.refresh() RETURNS trigger AS $BODY$ language plpgsql; +DROP TRIGGER IF EXISTS trigger_flag ON osm_water_polygon; +DROP TRIGGER IF EXISTS trigger_refresh ON water_lakeline.updates; + CREATE TRIGGER trigger_flag AFTER INSERT OR UPDATE OR DELETE ON osm_water_polygon FOR EACH STATEMENT diff --git a/layers/water_name/water_point.sql b/layers/water_name/water_point.sql index f938b76..2bf0de8 100644 --- a/layers/water_name/water_point.sql +++ b/layers/water_name/water_point.sql @@ -1,6 +1,8 @@ -- etldoc: osm_water_polygon -> osm_water_point -- etldoc: lake_centerline -> osm_water_point +DROP MATERIALIZED VIEW IF EXISTS osm_water_point CASCADE; + CREATE MATERIALIZED VIEW osm_water_point AS ( SELECT wp.osm_id, topoint(wp.geometry) AS geometry, @@ -10,10 +12,10 @@ CREATE MATERIALIZED VIEW osm_water_point AS ( WHERE ll.osm_id IS NULL AND wp.name <> '' ) WITH NO DATA; CREATE INDEX IF NOT EXISTS osm_water_point_geometry_idx ON osm_water_point USING gist (geometry); - + -- Handle updates -CREATE SCHEMA water_name; +CREATE SCHEMA IF NOT EXISTS water_name; CREATE TABLE IF NOT EXISTS water_name.updates(id serial primary key, t text, unique (t)); CREATE OR REPLACE FUNCTION water_name.flag() RETURNS trigger AS $$ @@ -34,6 +36,9 @@ CREATE OR REPLACE FUNCTION water_name.refresh() RETURNS trigger AS $BODY$ language plpgsql; +DROP TRIGGER IF EXISTS trigger_flag ON osm_water_polygon; +DROP TRIGGER IF EXISTS trigger_refresh ON water_name.updates; + CREATE TRIGGER trigger_flag AFTER INSERT OR UPDATE OR DELETE ON osm_water_polygon FOR EACH STATEMENT diff --git a/layers/waterway/merge_waterway.sql b/layers/waterway/merge_waterway.sql index ec2628f..614cfae 100644 --- a/layers/waterway/merge_waterway.sql +++ b/layers/waterway/merge_waterway.sql @@ -4,6 +4,11 @@ -- and also makes it possible to filter out too short rivers -- etldoc: osm_waterway_linestring -> osm_important_waterway_linestring +DROP MATERIALIZED VIEW IF EXISTS osm_important_waterway_linestring CASCADE; +DROP MATERIALIZED VIEW IF EXISTS osm_important_waterway_linestring_gen1 CASCADE; +DROP MATERIALIZED VIEW IF EXISTS osm_important_waterway_linestring_gen2 CASCADE; +DROP MATERIALIZED VIEW IF EXISTS osm_important_waterway_linestring_gen3 CASCADE; + CREATE MATERIALIZED VIEW osm_important_waterway_linestring AS ( SELECT (ST_Dump(geometry)).geom AS geometry, @@ -45,7 +50,7 @@ CREATE INDEX IF NOT EXISTS osm_important_waterway_linestring_gen3_geometry_idx O -- Handle updates -CREATE SCHEMA waterway; +CREATE SCHEMA IF NOT EXISTS waterway; CREATE TABLE IF NOT EXISTS waterway.updates(id serial primary key, t text, unique (t)); CREATE OR REPLACE FUNCTION waterway.flag() RETURNS trigger AS $$ @@ -69,6 +74,9 @@ CREATE OR REPLACE FUNCTION waterway.refresh() RETURNS trigger AS $BODY$ language plpgsql; +DROP TRIGGER IF EXISTS trigger_flag ON osm_waterway_linestring; +DROP TRIGGER IF EXISTS trigger_refresh ON waterway.updates; + CREATE TRIGGER trigger_flag AFTER INSERT OR UPDATE OR DELETE ON osm_waterway_linestring FOR EACH STATEMENT