]> git.openstreetmap.org Git - nominatim.git/commitdiff
split query that deletes old objects from placex
authorSarah Hoffmann <lonvia@denofr.de>
Mon, 2 Jan 2023 16:25:38 +0000 (17:25 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Wed, 22 Mar 2023 09:51:56 +0000 (10:51 +0100)
placex only has partial indexes over OSM types, so the OSM type
needs to be hardcoded to ensure these indexes are used.

lib-sql/functions/place_triggers.sql

index 489ecb350ae83169f6bd88fb9b4e48c625c45350..6a52021bb02d40f2a83ce4e71e88f0185b4efe41 100644 (file)
@@ -384,7 +384,19 @@ BEGIN
 
   -- Mark for delete in the placex table
   UPDATE placex SET indexed_status = 100 FROM place_to_be_deleted
-    WHERE placex.osm_type = place_to_be_deleted.osm_type
+    WHERE placex.osm_type = 'N' and place_to_be_deleted.osm_type = 'N'
+          and placex.osm_id = place_to_be_deleted.osm_id
+          and placex.class = place_to_be_deleted.class
+          and placex.type = place_to_be_deleted.type
+          and not deferred;
+  UPDATE placex SET indexed_status = 100 FROM place_to_be_deleted
+    WHERE placex.osm_type = 'W' and place_to_be_deleted.osm_type = 'W'
+          and placex.osm_id = place_to_be_deleted.osm_id
+          and placex.class = place_to_be_deleted.class
+          and placex.type = place_to_be_deleted.type
+          and not deferred;
+  UPDATE placex SET indexed_status = 100 FROM place_to_be_deleted
+    WHERE placex.osm_type = 'R' and place_to_be_deleted.osm_type = 'R'
           and placex.osm_id = place_to_be_deleted.osm_id
           and placex.class = place_to_be_deleted.class
           and placex.type = place_to_be_deleted.type