LATERAL compute_place_rank(country_code, 'A', class, type,
admin_level, False, null) prank
WHERE osm_type = 'R'
- and prank.address_rank = NEW.rank_address
+ 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)
LIMIT 1
LOOP
END IF;
END IF;
+ {% if not disable_diff_updates %}
+ IF OLD.rank_address != NEW.rank_address THEN
+ -- After a rank shift all addresses containing us must be updated.
+ UPDATE placex p SET indexed_status = 2 FROM place_addressline pa
+ WHERE pa.address_place_id = NEW.place_id and p.place_id = pa.place_id
+ and p.indexed_status = 0 and p.rank_address between 4 and 25;
+ END IF;
+ {% endif %}
+
IF NEW.admin_level = 2
AND NEW.class = 'boundary' AND NEW.type = 'administrative'
AND NEW.country_code IS NOT NULL AND NEW.osm_type = 'R'