X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/316205e4554e0c056015ade0f2e02955ef659b78..690f9ec06fd7a08b41de027427d8a1d3d0e3ff2e:/lib-sql/functions/place_triggers.sql diff --git a/lib-sql/functions/place_triggers.sql b/lib-sql/functions/place_triggers.sql index 219bb6fe..08331f32 100644 --- a/lib-sql/functions/place_triggers.sql +++ b/lib-sql/functions/place_triggers.sql @@ -1,3 +1,10 @@ +-- SPDX-License-Identifier: GPL-2.0-only +-- +-- This file is part of Nominatim. (https://nominatim.org) +-- +-- Copyright (C) 2022 by the Nominatim developer community. +-- For a full list of authors see the git log. + CREATE OR REPLACE FUNCTION place_insert() RETURNS TRIGGER AS $$ @@ -271,18 +278,26 @@ BEGIN and x.class = p.class; END IF; - -- When streets change their name, the parenting of rank30 objects may change. - IF existingplacex.rank_address between 26 and 27 - and coalesce(existing.name::text, '') != coalesce(NEW.name::text, '') + IF coalesce(existing.name::text, '') != coalesce(NEW.name::text, '') THEN - UPDATE placex SET indexed_status = 2 - WHERE indexed_status = 0 and address ? 'street' - and parent_place_id = existingplacex.place_id; - UPDATE placex SET indexed_status = 2 - WHERE indexed_status = 0 and rank_search = 30 and address ? 'street' - and ST_DWithin(NEW.geometry, geometry, 0.002); + IF existingplacex.rank_address between 26 and 27 THEN + -- When streets change their name, this may have an effect on POI objects + -- with addr:street tags. + UPDATE placex SET indexed_status = 2 + WHERE indexed_status = 0 and address ? 'street' + and parent_place_id = existingplacex.place_id; + UPDATE placex SET indexed_status = 2 + WHERE indexed_status = 0 and rank_search = 30 and address ? 'street' + and ST_DWithin(NEW.geometry, geometry, 0.002); + ELSEIF existingplacex.rank_address between 16 and 25 THEN + -- When places change their name, this may have an effect on POI objects + -- with addr:place tags. + UPDATE placex SET indexed_status = 2 + WHERE indexed_status = 0 and address ? 'place' and rank_search = 30 + and parent_place_id = existingplacex.place_id; + -- No update of surrounding objects, potentially too expensive. + END IF; END IF; - END IF; -- Abort the add (we modified the existing place instead)