From e7e7ae0104365def5303842cf327c53532850440 Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Mon, 2 Oct 2017 20:42:37 +0200 Subject: [PATCH] avoid unnecessary SQL when rechecking rank restrictions --- lib/Geocode.php | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/lib/Geocode.php b/lib/Geocode.php index fc2d6c65..0c2a9963 100644 --- a/lib/Geocode.php +++ b/lib/Geocode.php @@ -1739,20 +1739,19 @@ class Geocode if ($this->aAddressRankList) { $sSQL .= " OR placex.rank_address in (".join(',', $this->aAddressRankList).")"; } - if (CONST_Use_US_Tiger_Data) { - $sSQL .= " ) "; + $sSQL .= " ) "; + if (CONST_Use_US_Tiger_Data && $this->iMaxAddressRank == 30) { $sSQL .= "UNION "; $sSQL .= " SELECT place_id "; $sSQL .= " FROM location_property_tiger "; $sSQL .= " WHERE place_id in (".join(',', array_keys($aResultPlaceIDs)).") "; - $sSQL .= " AND (30 between $this->iMinAddressRank and $this->iMaxAddressRank "; - if ($this->aAddressRankList) $sSQL .= " OR 30 in (".join(',', $this->aAddressRankList).")"; } - $sSQL .= ") UNION "; - $sSQL .= " SELECT place_id "; - $sSQL .= " FROM location_property_osmline "; - $sSQL .= " WHERE place_id in (".join(',', array_keys($aResultPlaceIDs)).")"; - $sSQL .= " AND startnumber is not NULL AND (30 between $this->iMinAddressRank and $this->iMaxAddressRank)"; + if ($this->iMaxAddressRank == 30) { + $sSQL .= "UNION "; + $sSQL .= " SELECT place_id "; + $sSQL .= " FROM location_property_osmline "; + $sSQL .= " WHERE place_id in (".join(',', array_keys($aResultPlaceIDs)).")"; + } if (CONST_Debug) var_dump($sSQL); $aFilteredPlaceIDs = chksql($this->oDB->getCol($sSQL)); $tempIDs = array(); -- 2.39.5