From: Sarah Hoffmann Date: Sun, 4 Jun 2017 12:55:06 +0000 (+0200) Subject: Merge remote-tracking branch 'upstream/master' X-Git-Tag: deploy~386 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/1020a888346295466acc6cd3c366760f434d3f6c?hp=-c Merge remote-tracking branch 'upstream/master' --- 1020a888346295466acc6cd3c366760f434d3f6c diff --combined sql/functions.sql index 434ab318,6cc42803..8b1372d4 --- a/sql/functions.sql +++ b/sql/functions.sql @@@ -1491,7 -1491,7 +1491,7 @@@ BEGI IF relation_members IS NOT NULL THEN FOR relMember IN select get_osm_rel_members(relation_members,ARRAY['label']) as member LOOP - FOR linkedPlacex IN select * from placex where osm_type = upper(substring(relMember.member,1,1))::char(1) + FOR linkedPlacex IN select * from placex where osm_type = upper(substring(relMember.member,1,1))::"char" and osm_id = substring(relMember.member,2,10000)::bigint order by rank_search desc limit 1 LOOP -- If we don't already have one use this as the centre point of the geometry @@@ -1522,7 -1522,7 +1522,7 @@@ FOR relMember IN select get_osm_rel_members(relation_members,ARRAY['admin_center','admin_centre']) as member LOOP - FOR linkedPlacex IN select * from placex where osm_type = upper(substring(relMember.member,1,1))::char(1) + FOR linkedPlacex IN select * from placex where osm_type = upper(substring(relMember.member,1,1))::"char" and osm_id = substring(relMember.member,2,10000)::bigint order by rank_search desc limit 1 LOOP -- For an admin centre we also want a name match - still not perfect, for example 'new york, new york' @@@ -1571,7 -1571,7 +1571,7 @@@ make_standard_name(name->'name') = make_standard_name(NEW.name->'name') AND placex.rank_address = NEW.rank_address AND placex.place_id != NEW.place_id - AND placex.osm_type = 'N'::char(1) AND placex.rank_search < 26 + AND placex.osm_type = 'N' AND placex.rank_search < 26 AND st_covers(NEW.geometry, placex.geometry) LOOP @@@ -1621,7 -1621,7 +1621,7 @@@ -- Still null? how about looking it up by the node id IF NEW.importance IS NULL THEN - select language||':'||title,importance from wikipedia_article where osm_type = 'N'::char(1) and osm_id = linked_node_id order by importance desc limit 1 INTO NEW.wikipedia,NEW.importance; + select language||':'||title,importance from wikipedia_article where osm_type = 'N' and osm_id = linked_node_id order by importance desc limit 1 INTO NEW.wikipedia,NEW.importance; END IF; END IF; @@@ -2381,7 -2381,7 +2381,7 @@@ BEGI CASE WHEN class = 'place' and type = 'postcode' THEN hstore('name', postcode) ELSE name END as name, CASE WHEN extratags ? 'place' THEN 'place' ELSE class END as class, CASE WHEN extratags ? 'place' THEN extratags->'place' ELSE type END as type, - admin_level, fromarea, isaddress, + admin_level, fromarea, isaddress and linked_place_id is NULL as isaddress, CASE WHEN address_place_id = for_place_id AND rank_address = 0 THEN 100 WHEN rank_address = 11 THEN 5 ELSE rank_address END as rank_address, distance,country_code,postcode from place_addressline join placex on (address_place_id = placex.place_id)