]> git.openstreetmap.org Git - nominatim.git/commitdiff
reimport boundaries from scratch when type is changed
authorSarah Hoffmann <lonvia@denofr.de>
Mon, 12 Feb 2018 20:19:27 +0000 (21:19 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Mon, 12 Feb 2018 20:19:27 +0000 (21:19 +0100)
Fixes #895.

sql/functions.sql
test/bdd/db/update/simple.feature

index 58d3fc7de7e78f8962c38bb3269c722864205d19..1829c63dea21e7dca324fb19d67c53e30c611c69 100644 (file)
@@ -2200,7 +2200,9 @@ BEGIN
 
     -- To paraphrase, if there isn't an existing item, OR if the admin level has changed
     IF existingplacex.osm_type IS NULL OR
-      (coalesce(existingplacex.admin_level, 15) != coalesce(NEW.admin_level, 15) AND existingplacex.class = 'boundary' AND existingplacex.type = 'administrative')
+        (existingplacex.class = 'boundary' AND
+          ((coalesce(existingplacex.admin_level, 15) != coalesce(NEW.admin_level, 15) AND existingplacex.type = 'administrative') OR
+          (existingplacex.type != NEW.type)))
     THEN
 
       IF existingplacex.osm_type IS NOT NULL THEN
index ecbb1244c7caab45a1e90c25758062b4e065fa95..d48e97fa881ff85cff2e9d5331cd7a08f5dfc7a5 100644 (file)
@@ -85,3 +85,22 @@ Feature: Update of simple objects
           | osm | class    | type           | name | admin | geometry   |
           | W1  | boundary | administrative | Haha | 5     | 1, 2, 4, 3 |
         Then placex has no entry for W1
+
+     #895
+     Scenario: update rank when boundary is downgraded from admin to historic
+        Given the grid
+          | 1 | 2 |
+          | 3 | 4 |
+        And the places
+          | osm | class    | type           | name | admin | geometry        |
+          | W1  | boundary | administrative | Haha | 5     | (1, 2, 4, 3, 1) |
+        When importing
+        Then placex contains
+          | object | rank_address |
+          | W1     | 10           |
+        When updating places
+          | osm | class    | type           | name | admin | geometry        |
+          | W1  | boundary | historic       | Haha | 5     | (1, 2, 4, 3, 1) |
+        Then placex contains
+          | object | rank_address |
+          | W1     | 0            |