From ffb2c93ba3b0645b98527e5b87bba2a5f3477edf Mon Sep 17 00:00:00 2001
From: Sarah Hoffmann <lonvia@denofr.de>
Date: Tue, 17 Nov 2020 19:44:43 +0100
Subject: [PATCH] POIs with unknown addr:place must add parent name to address

The previous behaviour was a left-over from a former version
where such POIs parented to the street. Now that they parent to
places, it should be included.
---
 sql/functions/normalization.sql        | 10 ++++------
 test/bdd/db/import/search_name.feature |  9 ++++++---
 2 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/sql/functions/normalization.sql b/sql/functions/normalization.sql
index b2fecab7..03b97968 100644
--- a/sql/functions/normalization.sql
+++ b/sql/functions/normalization.sql
@@ -518,16 +518,14 @@ BEGIN
     addr_place_ids := addr_ids_from_name(address->'place');
     IF not addr_place_ids <@ parent_name_vector THEN
       -- addr:place tag exists without a corresponding place. Mix in addr:place
-      -- in the address and drop the name from the parent. This would only be
-      -- the street name of the nearest street.
-      nameaddress_vector := array_merge(nameaddress_vector, addr_place_ids);
+      -- in the address.
       name_vector := ARRAY[getorcreate_name_id(housenumber)];
+      nameaddress_vector := array_merge(nameaddress_vector, addr_place_ids);
     END IF;
-  ELSE
-    nameaddress_vector := array_merge(nameaddress_vector, parent_name_vector);
   END IF;
 
-  -- The address vector always gets merged in.
+  -- Merge the parent name and address.
+  nameaddress_vector := array_merge(nameaddress_vector, parent_name_vector);
   nameaddress_vector := array_merge(nameaddress_vector, parent_address_vector);
 
 END;
diff --git a/test/bdd/db/import/search_name.feature b/test/bdd/db/import/search_name.feature
index 866a597d..fe339f13 100644
--- a/test/bdd/db/import/search_name.feature
+++ b/test/bdd/db/import/search_name.feature
@@ -56,7 +56,7 @@ Feature: Creation of search terms
         When importing
         Then search_name has no entry for N1
 
-    Scenario: Unnamed POIs doesn't inherit parent name when unknown addr:place is present
+    Scenario: Unnamed POIs inherit parent name when unknown addr:place is present
         Given the scene roads-with-pois
         And the places
          | osm | class   | type        | housenr | addr+place | geometry |
@@ -66,15 +66,18 @@ Feature: Creation of search terms
          | W1  | highway | residential | Rose Street  | :w-north |
          | N2  | place   | city        | Strange Town | :p-N1 |
         When importing
+        Then placex contains
+         | object | parent_place_id |
+         | N1     | N2              |
         Then search_name contains
          | object | name_vector | nameaddress_vector |
-         | N1     | #23         | Walltown |
+         | N1     | #23         | Walltown, Strange, Town |
         When searching for "23 Rose Street"
         Then exactly 1 results are returned
         And results contain
          | osm_type | osm_id | name |
          | W        | 1      | Rose Street, Strange Town |
-        When searching for "23 Walltown"
+        When searching for "23 Walltown, Strange Town"
         Then results contain
          | osm_type | osm_id | name |
          | N        | 1      | 23, Walltown, Strange Town |
-- 
2.39.5