From: Sarah Hoffmann Date: Sat, 18 Feb 2017 12:51:21 +0000 (+0100) Subject: don't delete names on unknown country boundaries X-Git-Tag: v3.0.0~72 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/c897b96c4108f2e9a4520e5b31b53779f7faa274 don't delete names on unknown country boundaries If a country boundary has a country_code that is unknown to Nominatim, it would delete all names because the coalascing with country_name would not yield any result. --- diff --git a/sql/functions.sql b/sql/functions.sql index 949e4cae..f9a89b51 100644 --- a/sql/functions.sql +++ b/sql/functions.sql @@ -1988,7 +1988,10 @@ BEGIN -- Patch in additional country names IF NEW.admin_level = 2 AND NEW.type = 'administrative' AND NEW.country_code is not null THEN - select coalesce(country_name.name || NEW.name,NEW.name) from country_name where country_name.country_code = lower(NEW.country_code) INTO NEW.name; + SELECT name FROM country_name WHERE country_code = lower(NEW.country_code) INTO existing; + IF existing.name IS NOT NULL THEN + NEW.name = existing.name || NEW.name; + END IF; END IF; -- Have we already done this place? diff --git a/test/bdd/osm2pgsql/update/relation.feature b/test/bdd/osm2pgsql/update/relation.feature index 88889f9a..0eccd3e6 100644 --- a/test/bdd/osm2pgsql/update/relation.feature +++ b/test/bdd/osm2pgsql/update/relation.feature @@ -104,7 +104,6 @@ Feature: Update of relations by osm2pgsql """ Then place has no entry for R1 - @wip Scenario: Type tag is renamed to something unknown When loading osm data """ @@ -124,3 +123,37 @@ Feature: Update of relations by osm2pgsql """ Then place has no entry for R1 + Scenario: Country boundary names are left untouched when country_code unknown + When loading osm data + """ + n200 Tamenity=prison x0 y0 + n201 x0 y0.0001 + n202 x0.0001 y0.0001 + n203 x0.0001 y0 + """ + And updating osm data + """ + w1 Nn200,n201,n202,n203,n200 + r1 Ttype=boundary,boundary=administrative,name=Foo,country_code=XX,admin_level=2 Mw1@ + """ + Then place contains + | object | country_code | name | + | R1 | XX | 'name' : 'Foo' | + + Scenario: Country boundary names are extended when country_code known + When loading osm data + """ + n200 Tamenity=prison x0 y0 + n201 x0 y0.0001 + n202 x0.0001 y0.0001 + n203 x0.0001 y0 + """ + And updating osm data + """ + w1 Nn200,n201,n202,n203,n200 + r1 Ttype=boundary,boundary=administrative,name=Foo,country_code=ch,admin_level=2 Mw1@ + """ + Then place contains + | object | country_code | name+name:de | name+name | + | R1 | ch | Schweiz | Foo | +