force update of linker when linkee is updates

Potential name changes need to be added to the linker's
name hstore.

Fixes #170.
This commit is contained in:
Sarah Hoffmann 2017-06-06 23:46:44 +02:00
parent 9848381a04
commit 5a5691b5b7
3 changed files with 65 additions and 1 deletions

View File

@ -2167,6 +2167,20 @@ BEGIN
update location_property_osmline p set indexed_status = 2 from planet_osm_ways w where p.linegeo && NEW.geometry and p.osm_id = w.id and NEW.osm_id = any(w.nodes);
END IF;
-- linked places should get potential new naming and addresses
IF existingplacex.linked_place_id is not NULL THEN
update placex x set
name = p.name,
extratags = p.extratags,
indexed_status = 2
from place p
where x.place_id = existingplacex.linked_place_id
and x.indexed_status = 0
and x.osm_type = p.osm_type
and x.osm_id = p.osm_id
and x.class = p.class;
END IF;
END IF;
-- Abort the add (we modified the existing place instead)

View File

@ -89,3 +89,47 @@ Feature: Updates of linked places
| osm_type |
| R |
Scenario: Update linking relation when linkee name is updated
Given the places
| osm | class | type | name | admin | geometry |
| R1 | boundary | administrative | rel | 8 | poly-area:0.1 |
And the places
| osm | class | type | name+name:de | admin | geometry |
| N3 | place | city | pnt | 30 | 0.00001 0 |
And the relations
| id | members |
| 1 | N3:label |
When importing
Then placex contains
| object | linked_place_id | name+name:de |
| R1 | - | pnt |
| N3 | R1 | pnt |
When updating places
| osm | class | type | name+name:de | admin | geometry |
| N3 | place | city | newname | 30 | 0.00001 0 |
Then placex contains
| object | linked_place_id | name+name:de |
| N3 | R1 | newname |
| R1 | - | newname |
Scenario: Updating linkee extratags keeps linker's extratags
Given the named places
| osm | class | type | extra+wikidata | admin | geometry |
| R1 | boundary | administrative | 34 | 8 | poly-area:0.1 |
And the named places
| osm | class | type | geometry |
| N3 | place | city | 0.00001 0 |
And the relations
| id | members |
| 1 | N3:label |
When importing
Then placex contains
| object | extratags |
| R1 | 'wikidata' : '34', 'place' : 'city' |
When updating places
| osm | class | type | name | extra+oneway | admin | geometry |
| N3 | place | city | newname | yes | 30 | 0.00001 0 |
Then placex contains
| object | extratags |
| R1 | 'wikidata' : '34', 'oneway' : 'yes', 'place' : 'city' |

View File

@ -348,7 +348,13 @@ def check_placex_contents(context, exact):
if exact:
expected_content.add((res['osm_type'], res['osm_id'], res['class']))
for h in row.headings:
if h.startswith('name'):
if h in ('extratags', 'address'):
if row[h] == '-':
assert_is_none(res[h])
else:
vdict = eval('{' + row[h] + '}')
assert_equals(vdict, res[h])
elif h.startswith('name'):
name = h[5:] if h.startswith('name+') else 'name'
assert_in(name, res['name'])
eq_(res['name'][name], row[h])