X-Git-Url: https://git.openstreetmap.org/nominatim.git/blobdiff_plain/d6a0947e5a80651b69bddb87655dd92a859a7ff4..aef014a47d5509039a49776b0999fde902b5f8f4:/lib-sql/functions/placex_triggers.sql diff --git a/lib-sql/functions/placex_triggers.sql b/lib-sql/functions/placex_triggers.sql index bb34883a..6c23fd67 100644 --- a/lib-sql/functions/placex_triggers.sql +++ b/lib-sql/functions/placex_triggers.sql @@ -874,8 +874,9 @@ BEGIN FROM placex, LATERAL compute_place_rank(country_code, 'A', class, type, admin_level, False, null) prank - WHERE class = 'place' and rank_address < 24 + WHERE class = 'place' and rank_address between 1 and 23 and prank.address_rank >= NEW.rank_address + and ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon') -- select right index and geometry && NEW.geometry and geometry ~ NEW.geometry -- needed because ST_Relate does not do bbox cover test and ST_Relate(geometry, NEW.geometry, 'T*T***FF*') -- contains but not equal @@ -896,6 +897,8 @@ BEGIN LATERAL compute_place_rank(country_code, 'A', class, type, admin_level, False, null) prank WHERE prank.address_rank < 24 + and rank_address between 1 and 25 -- select right index + and ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon') -- select right index and prank.address_rank >= NEW.rank_address and geometry && NEW.geometry and geometry ~ NEW.geometry -- needed because ST_Relate does not do bbox cover test @@ -916,6 +919,8 @@ BEGIN LATERAL compute_place_rank(country_code, 'A', class, type, admin_level, False, null) prank WHERE osm_type = 'R' + and rank_address between 1 and 25 -- select right index + and ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon') -- select right index and ((class = 'place' and prank.address_rank = NEW.rank_address) or (class = 'boundary' and rank_address = NEW.rank_address)) and geometry && NEW.centroid and _ST_Covers(geometry, NEW.centroid)