-- 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;
+ -- 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.
-- location_postcodes is filled from the place table directly.
IF NEW.class = 'place' AND NEW.type = 'postcode' THEN
RETURN NEW;
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 PlaceX: %',existingplacex.place_id;{% endif %}
Then placex contains
| object | addr+housenumber | geometry |
| N34 | 1 | country:de|
+ And place contains exactly
+ | object | class | type |
+ | N34 | place | house |
When updating postcodes
Then location_postcode contains exactly
| country | postcode | geometry |
| osm | class | type | addr+postcode | geometry |
| N34 | place | postcode | 01982 | country:de |
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 |