mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-03-07 10:34:08 +00:00
update postcode in place if it already exists
This commit is contained in:
@@ -97,6 +97,19 @@ BEGIN
|
|||||||
IF NEW.class = 'place' AND NEW.type = 'postcode' THEN
|
IF NEW.class = 'place' AND NEW.type = 'postcode' THEN
|
||||||
-- Remove old placex entry.
|
-- Remove old placex entry.
|
||||||
DELETE FROM placex where osm_type = NEW.osm_type and osm_id = NEW.osm_id;
|
DELETE FROM placex where osm_type = NEW.osm_type and osm_id = NEW.osm_id;
|
||||||
|
|
||||||
|
IF existing.osm_type IS NOT NULL THEN
|
||||||
|
IF coalesce(existing.address, ''::hstore) != coalesce(NEW.address, ''::hstore)
|
||||||
|
OR existing.geometry::text != NEW.geometry::text
|
||||||
|
THEN
|
||||||
|
|
||||||
|
update place set address = NEW.address, geometry = NEW.geometry
|
||||||
|
where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
RETURN NULL;
|
||||||
|
END IF;
|
||||||
|
|
||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
|
|||||||
@@ -56,3 +56,51 @@ Feature: Update of postcode
|
|||||||
| word | class | type |
|
| word | class | type |
|
||||||
| 01982 | place | postcode |
|
| 01982 | place | postcode |
|
||||||
|
|
||||||
|
Scenario: Updating a postcode is reflected in postcode table
|
||||||
|
Given the places
|
||||||
|
| osm | class | type | addr+postcode | geometry |
|
||||||
|
| N34 | place | postcode | 01982 | country:de |
|
||||||
|
When importing
|
||||||
|
And updating places
|
||||||
|
| osm | class | type | addr+postcode | geometry |
|
||||||
|
| N34 | place | postcode | 20453 | country:de |
|
||||||
|
And updating postcodes
|
||||||
|
Then location_postcode contains exactly
|
||||||
|
| country | postcode | geometry |
|
||||||
|
| de | 20453 | country:de |
|
||||||
|
And word contains
|
||||||
|
| word | class | type |
|
||||||
|
| 20453 | place | postcode |
|
||||||
|
|
||||||
|
Scenario: When changing from a postcode type, the entry appears in placex
|
||||||
|
When importing
|
||||||
|
And updating places
|
||||||
|
| osm | class | type | addr+postcode | geometry |
|
||||||
|
| N34 | place | postcode | 01982 | country:de |
|
||||||
|
Then placex has no entry for N34
|
||||||
|
When updating places
|
||||||
|
| osm | class | type | addr+postcode | housenr | geometry |
|
||||||
|
| N34 | place | house | 20453 | 1 | country:de |
|
||||||
|
Then placex contains
|
||||||
|
| object | addr+housenumber | geometry |
|
||||||
|
| N34 | 1 | country:de|
|
||||||
|
When updating postcodes
|
||||||
|
Then location_postcode contains exactly
|
||||||
|
| country | postcode | geometry |
|
||||||
|
| de | 20453 | country:de |
|
||||||
|
And word contains
|
||||||
|
| word | class | type |
|
||||||
|
| 20453 | place | postcode |
|
||||||
|
|
||||||
|
Scenario: When changing to a postcode type, the entry disappears from placex
|
||||||
|
When importing
|
||||||
|
And updating places
|
||||||
|
| osm | class | type | addr+postcode | housenr | geometry |
|
||||||
|
| N34 | place | house | 20453 | 1 | country:de |
|
||||||
|
Then placex contains
|
||||||
|
| object | addr+housenumber | geometry |
|
||||||
|
| N34 | 1 | country:de|
|
||||||
|
When updating places
|
||||||
|
| osm | class | type | addr+postcode | geometry |
|
||||||
|
| N34 | place | postcode | 01982 | country:de |
|
||||||
|
Then placex has no entry for N34
|
||||||
|
|||||||
Reference in New Issue
Block a user