X-Git-Url: https://git.openstreetmap.org/nominatim.git/blobdiff_plain/987d60ccdaa750defcd09ce64f19e3e049222802..33b038ce6f0e3d55241763eb4311d9ea19313c99:/sql/functions/placex_triggers.sql?ds=inline

diff --git a/sql/functions/placex_triggers.sql b/sql/functions/placex_triggers.sql
index ea9474e4..6965fe14 100644
--- a/sql/functions/placex_triggers.sql
+++ b/sql/functions/placex_triggers.sql
@@ -97,7 +97,7 @@ BEGIN
         -- Instead simply use the containing area with the largest rank.
         FOR location IN
           SELECT place_id FROM placex
-            WHERE bbox @ geometry AND _ST_Covers(geometry, ST_Centroid(bbox))
+            WHERE bbox && geometry AND _ST_Covers(geometry, ST_Centroid(bbox))
                   AND rank_address between 5 and 25
             ORDER BY rank_address desc
         LOOP
@@ -112,7 +112,7 @@ BEGIN
         -- contains the bbox, only use addressable features
         FOR location IN
           SELECT place_id FROM placex
-            WHERE bbox @ geometry AND _ST_Covers(geometry, ST_Centroid(bbox))
+            WHERE bbox && geometry AND _ST_Covers(geometry, ST_Centroid(bbox))
                   AND rank_address between 5 and 25
             ORDER BY rank_address desc
         LOOP
@@ -919,6 +919,18 @@ BEGIN
   THEN
     PERFORM create_country(NEW.name, lower(NEW.country_code));
     --DEBUG: RAISE WARNING 'Country names updated';
+
+    -- Also update the list of country names. Adding an additional sanity
+    -- check here: make sure the country does overlap with the area where
+    -- we expect it to be as per static country grid.
+    FOR location IN
+      SELECT country_code FROM country_osm_grid
+       WHERE ST_Covers(geometry, NEW.centroid) and country_code = NEW.country_code
+       LIMIT 1
+    LOOP
+      --DEBUG: RAISE WARNING 'Updating names for country '%' with: %', NEW.country_code, NEW.name;
+      UPDATE country_name SET name = name || NEW.name WHERE country_code = NEW.country_code;
+    END LOOP;
   END IF;
 
   -- For linear features we need the full geometry for determining the address
