update postcode in place if it already exists

This commit is contained in:
Sarah Hoffmann
2021-06-18 00:28:10 +02:00
parent aa558e6080
commit 457982e1d2
2 changed files with 61 additions and 0 deletions

View File

@@ -97,6 +97,19 @@ BEGIN
IF NEW.class = 'place' AND NEW.type = 'postcode' THEN
-- Remove old placex entry.
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;
END IF;

View File

@@ -56,3 +56,51 @@ Feature: Update of postcode
| word | class | type |
| 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