forked from hans/Nominatim
restrict range for interpolated housenumbers
Interpolations are only supported up to 2^32 by the database. Limit to 8 digits, which is still more than should be needed.
This commit is contained in:
@@ -685,7 +685,8 @@ class PlaceSearch(AbstractSearch):
|
||||
if self.qualifiers:
|
||||
place_sql = place_sql.where(self.qualifiers.sql_restrict(thnr))
|
||||
|
||||
numerals = [int(n) for n in self.housenumbers.values if n.isdigit()]
|
||||
numerals = [int(n) for n in self.housenumbers.values
|
||||
if n.isdigit() and len(n) < 8]
|
||||
interpol_sql: SaColumn
|
||||
tiger_sql: SaColumn
|
||||
if numerals and \
|
||||
|
||||
@@ -267,6 +267,26 @@ class TestStreetWithHousenumber:
|
||||
assert all(geom.name.lower() in r.geometry for r in results)
|
||||
|
||||
|
||||
def test_very_large_housenumber(apiobj):
|
||||
apiobj.add_placex(place_id=93, class_='place', type='house',
|
||||
parent_place_id=2000,
|
||||
housenumber='2467463524544', country_code='pt')
|
||||
apiobj.add_placex(place_id=2000, class_='highway', type='residential',
|
||||
rank_search=26, rank_address=26,
|
||||
country_code='pt')
|
||||
apiobj.add_search_name(2000, names=[1,2],
|
||||
search_rank=26, address_rank=26,
|
||||
country_code='pt')
|
||||
|
||||
lookup = FieldLookup('name_vector', [1, 2], 'lookup_all')
|
||||
|
||||
results = run_search(apiobj, 0.1, [lookup], [], hnrs=['2467463524544'],
|
||||
details=SearchDetails())
|
||||
|
||||
assert results
|
||||
assert [r.place_id for r in results] == [93, 2000]
|
||||
|
||||
|
||||
class TestInterpolations:
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
|
||||
Reference in New Issue
Block a user