Ensure that postcode relations are used in addresses

Postcode nodes are normally thrown away as they only play
a role for computing artifical postcodes. However, if we
have a postcode area this still should take part of the
address.

Fixes #1330.
This commit is contained in:
Sarah Hoffmann
2019-04-14 11:20:03 +02:00
parent 2a4198f94d
commit 403ee260f6

View File

@@ -2318,6 +2318,7 @@ DECLARE
searchhousename HSTORE;
searchrankaddress INTEGER;
searchpostcode TEXT;
postcode_isaddress BOOL;
searchclass TEXT;
searchtype TEXT;
countryname HSTORE;
@@ -2325,6 +2326,8 @@ BEGIN
-- The place ein question might not have a direct entry in place_addressline.
-- Look for the parent of such places then and save if in for_place_id.
postcode_isaddress := true;
-- first query osmline (interpolation lines)
IF in_housenumber >= 0 THEN
SELECT parent_place_id, country_code, in_housenumber::text, 30, postcode,
@@ -2441,7 +2444,10 @@ BEGIN
searchcountrycode := location.country_code;
END IF;
IF location.type in ('postcode', 'postal_code') THEN
location.isaddress := FALSE;
postcode_isaddress := false;
IF location.osm_type != 'R' THEN
location.isaddress := FALSE;
END IF;
END IF;
countrylocation := ROW(location.place_id, location.osm_type, location.osm_id,
location.name, location.class, location.type,
@@ -2485,7 +2491,7 @@ BEGIN
IF searchpostcode IS NOT NULL THEN
location := ROW(null, null, null, hstore('ref', searchpostcode), 'place',
'postcode', null, true, true, 5, 0)::addressline;
'postcode', null, false, postcode_isaddress, 5, 0)::addressline;
RETURN NEXT location;
END IF;