X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/332de72045ec0f52c322a595a35a1306ea8a5efb..253dc7d7cd6cae88b8f2d777c1b2996390b37e54:/lib-sql/functions/placex_triggers.sql?ds=inline diff --git a/lib-sql/functions/placex_triggers.sql b/lib-sql/functions/placex_triggers.sql index 681c302d..01f99715 100644 --- a/lib-sql/functions/placex_triggers.sql +++ b/lib-sql/functions/placex_triggers.sql @@ -727,10 +727,12 @@ BEGIN {% if not disable_diff_updates %} -- The following is not needed until doing diff updates, and slows the main index process down - IF NEW.rank_address > 0 THEN + IF NEW.rank_address between 2 and 27 THEN IF (ST_GeometryType(NEW.geometry) in ('ST_Polygon','ST_MultiPolygon') AND ST_IsValid(NEW.geometry)) THEN -- Performance: We just can't handle re-indexing for country level changes - IF st_area(NEW.geometry) < 1 THEN + IF (NEW.rank_address < 26 and st_area(NEW.geometry) < 1) + OR (NEW.rank_address >= 26 and st_area(NEW.geometry) < 0.01) + THEN -- mark items within the geometry for re-indexing -- RAISE WARNING 'placex poly insert: % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type; @@ -745,9 +747,11 @@ BEGIN or name is not null or (NEW.rank_address >= 16 and address ? 'place')); END IF; - ELSE + ELSEIF ST_GeometryType(NEW.geometry) not in ('ST_LineString', 'ST_MultiLineString') + OR ST_Length(NEW.geometry) < 0.5 + THEN -- mark nearby items for re-indexing, where 'nearby' depends on the features rank_search and is a complete guess :( - diameter := update_place_diameter(NEW.rank_search); + diameter := update_place_diameter(NEW.rank_address); IF diameter > 0 THEN -- RAISE WARNING 'placex point insert: % % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type,diameter; IF NEW.rank_search >= 26 THEN @@ -1399,6 +1403,8 @@ BEGIN {% if debug %}RAISE WARNING 'placex_delete:12 % %',OLD.osm_type,OLD.osm_id;{% endif %} + UPDATE location_postcode SET indexed_status = 2 WHERE parent_place_id = OLD.place_id; + RETURN OLD; END;