X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/5236e7a03e86ca365d303660ccbf2a2677ed9b17..1064a9264e01268cf58cf325c862f9033c076137:/sql/functions/placex_triggers.sql?ds=inline diff --git a/sql/functions/placex_triggers.sql b/sql/functions/placex_triggers.sql index 680e80e7..9bc3469b 100644 --- a/sql/functions/placex_triggers.sql +++ b/sql/functions/placex_triggers.sql @@ -360,7 +360,7 @@ BEGIN INSERT INTO place_addressline (place_id, address_place_id, fromarea, isaddress, distance, cached_rank_address) - VALUES (obj_place_id, location.place_id, true, + VALUES (obj_place_id, location.place_id, not location.isguess, location_isaddress, location.distance, location.rank_address); END LOOP; END; @@ -624,7 +624,7 @@ BEGIN SELECT rank_address FROM placex WHERE class = 'place' and rank_address < 24 and rank_address > NEW.rank_address - and geometry ~ NEW.geometry + and geometry && NEW.geometry and ST_Relate(geometry, NEW.geometry, 'T*T***FF*') -- contains but not equal ORDER BY rank_address desc LIMIT 1 LOOP @@ -640,7 +640,7 @@ BEGIN SELECT rank_address FROM placex WHERE osm_type = 'R' and class = 'boundary' and type = 'administrative' and rank_address = NEW.rank_address - and geometry ~ NEW.centroid and _ST_Covers(geometry, NEW.centroid) + and geometry && NEW.centroid and _ST_Covers(geometry, NEW.centroid) LIMIT 1 LOOP NEW.rank_address = NEW.rank_address + 2; @@ -743,10 +743,10 @@ BEGIN IF NEW.osm_type = 'N' AND addr_street IS NULL AND addr_place IS NULL AND NEW.housenumber IS NULL THEN FOR location IN - -- The additional ~ condition works around the misguided query + -- The additional && condition works around the misguided query -- planner of postgis 3.0. SELECT address from placex where ST_Covers(geometry, NEW.centroid) - and geometry ~ NEW.centroid + and geometry && NEW.centroid and (address ? 'housenumber' or address ? 'street' or address ? 'place') and rank_search > 28 AND ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon') limit 1 @@ -801,7 +801,8 @@ BEGIN IF NEW.rank_search <= 25 and NEW.rank_address > 0 THEN result := add_location(NEW.place_id, NEW.country_code, NEW.partition, name_vector, NEW.rank_search, NEW.rank_address, - upper(trim(NEW.address->'postcode')), NEW.geometry); + upper(trim(NEW.address->'postcode')), NEW.geometry, + NEW.centroid); --DEBUG: RAISE WARNING 'Place added to location table'; END IF; @@ -932,7 +933,7 @@ BEGIN IF NEW.name IS NOT NULL THEN IF NEW.rank_search <= 25 and NEW.rank_address > 0 THEN - result := add_location(NEW.place_id, NEW.country_code, NEW.partition, name_vector, NEW.rank_search, NEW.rank_address, upper(trim(NEW.address->'postcode')), NEW.geometry); + result := add_location(NEW.place_id, NEW.country_code, NEW.partition, name_vector, NEW.rank_search, NEW.rank_address, upper(trim(NEW.address->'postcode')), NEW.geometry, NEW.centroid); --DEBUG: RAISE WARNING 'added to location (full)'; END IF;