mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-26 11:08:13 +00:00
make sure old data gets deleted on place type change
When changing from some other place type to place=postcode make sure that the old place type entry in the place table is deleted.
This commit is contained in:
@@ -92,6 +92,13 @@ BEGIN
|
|||||||
-- Get the existing place_id
|
-- Get the existing place_id
|
||||||
select * from placex where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type INTO existingplacex;
|
select * from placex where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type INTO existingplacex;
|
||||||
|
|
||||||
|
-- Handle a place changing type by removing the old data
|
||||||
|
-- My generated 'place' types are causing havok because they overlap with real keys
|
||||||
|
-- TODO: move them to their own special purpose key/class to avoid collisions
|
||||||
|
IF existing.osm_type IS NULL THEN
|
||||||
|
DELETE FROM place where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class;
|
||||||
|
END IF;
|
||||||
|
|
||||||
-- Pure postcodes are never queried from placex so we don't add them.
|
-- Pure postcodes are never queried from placex so we don't add them.
|
||||||
-- location_postcodes is filled from the place table directly.
|
-- location_postcodes is filled from the place table directly.
|
||||||
IF NEW.class = 'place' AND NEW.type = 'postcode' THEN
|
IF NEW.class = 'place' AND NEW.type = 'postcode' THEN
|
||||||
@@ -113,13 +120,6 @@ BEGIN
|
|||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
-- Handle a place changing type by removing the old data
|
|
||||||
-- My generated 'place' types are causing havok because they overlap with real keys
|
|
||||||
-- TODO: move them to their own special purpose key/class to avoid collisions
|
|
||||||
IF existing.osm_type IS NULL THEN
|
|
||||||
DELETE FROM place where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class;
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
{% if debug %}RAISE WARNING 'Existing: %',existing.osm_id;{% endif %}
|
{% if debug %}RAISE WARNING 'Existing: %',existing.osm_id;{% endif %}
|
||||||
{% if debug %}RAISE WARNING 'Existing PlaceX: %',existingplacex.place_id;{% endif %}
|
{% if debug %}RAISE WARNING 'Existing PlaceX: %',existingplacex.place_id;{% endif %}
|
||||||
|
|
||||||
|
|||||||
@@ -84,6 +84,9 @@ Feature: Update of postcode
|
|||||||
Then placex contains
|
Then placex contains
|
||||||
| object | addr+housenumber | geometry |
|
| object | addr+housenumber | geometry |
|
||||||
| N34 | 1 | country:de|
|
| N34 | 1 | country:de|
|
||||||
|
And place contains exactly
|
||||||
|
| object | class | type |
|
||||||
|
| N34 | place | house |
|
||||||
When updating postcodes
|
When updating postcodes
|
||||||
Then location_postcode contains exactly
|
Then location_postcode contains exactly
|
||||||
| country | postcode | geometry |
|
| country | postcode | geometry |
|
||||||
@@ -104,3 +107,13 @@ Feature: Update of postcode
|
|||||||
| osm | class | type | addr+postcode | geometry |
|
| osm | class | type | addr+postcode | geometry |
|
||||||
| N34 | place | postcode | 01982 | country:de |
|
| N34 | place | postcode | 01982 | country:de |
|
||||||
Then placex has no entry for N34
|
Then placex has no entry for N34
|
||||||
|
And place contains exactly
|
||||||
|
| object | class | type |
|
||||||
|
| N34 | place | postcode |
|
||||||
|
When updating postcodes
|
||||||
|
Then location_postcode contains exactly
|
||||||
|
| country | postcode | geometry |
|
||||||
|
| de | 01982 | country:de |
|
||||||
|
And word contains
|
||||||
|
| word | class | type |
|
||||||
|
| 01982 | place | postcode |
|
||||||
|
|||||||
Reference in New Issue
Block a user