force update on rank30 children when place name changes

Name changes may have an effect on parenting. Don't update
surrounding rank30 objects with addr:place tags as this is
potentially too expensive.
This commit is contained in:
Sarah Hoffmann
2021-09-27 11:04:17 +02:00
parent 316205e455
commit 6d7c067461
2 changed files with 123 additions and 10 deletions

View File

@@ -271,18 +271,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)