mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-03-11 05:14:07 +00:00
hstore in 9.2 replaces k=>v with hstore(k,v). Update sql to reflect change and introduce compatability function for pre 9.1 postgresql
This commit is contained in:
@@ -950,9 +950,9 @@ BEGIN
|
|||||||
default_language := get_country_language_code(NEW.calculated_country_code);
|
default_language := get_country_language_code(NEW.calculated_country_code);
|
||||||
IF default_language IS NOT NULL THEN
|
IF default_language IS NOT NULL THEN
|
||||||
IF NEW.name ? 'name' AND NOT NEW.name ? ('name:'||default_language) THEN
|
IF NEW.name ? 'name' AND NOT NEW.name ? ('name:'||default_language) THEN
|
||||||
NEW.name := NEW.name || (('name:'||default_language) => (NEW.name -> 'name'));
|
NEW.name := NEW.name || hstore(('name:'||default_language), (NEW.name -> 'name'));
|
||||||
ELSEIF NEW.name ? ('name:'||default_language) AND NOT NEW.name ? 'name' THEN
|
ELSEIF NEW.name ? ('name:'||default_language) AND NOT NEW.name ? 'name' THEN
|
||||||
NEW.name := NEW.name || ('name' => (NEW.name -> ('name:'||default_language)));
|
NEW.name := NEW.name || hstore('name', (NEW.name -> ('name:'||default_language)));
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
@@ -979,7 +979,7 @@ BEGIN
|
|||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
NEW.name := 'ref'=>NEW.postcode;
|
NEW.name := hstore('ref', NEW.postcode);
|
||||||
|
|
||||||
IF NEW.calculated_country_code = 'gb' THEN
|
IF NEW.calculated_country_code = 'gb' THEN
|
||||||
|
|
||||||
@@ -1335,9 +1335,9 @@ BEGIN
|
|||||||
default_language := get_country_language_code(NEW.calculated_country_code);
|
default_language := get_country_language_code(NEW.calculated_country_code);
|
||||||
IF default_language IS NOT NULL THEN
|
IF default_language IS NOT NULL THEN
|
||||||
IF NEW.name ? 'name' AND NOT NEW.name ? ('name:'||default_language) THEN
|
IF NEW.name ? 'name' AND NOT NEW.name ? ('name:'||default_language) THEN
|
||||||
NEW.name := NEW.name || (('name:'||default_language) => (NEW.name -> 'name'));
|
NEW.name := NEW.name || hstore(('name:'||default_language), (NEW.name -> 'name'));
|
||||||
ELSEIF NEW.name ? ('name:'||default_language) AND NOT NEW.name ? 'name' THEN
|
ELSEIF NEW.name ? ('name:'||default_language) AND NOT NEW.name ? 'name' THEN
|
||||||
NEW.name := NEW.name || ('name' => (NEW.name -> ('name:'||default_language)));
|
NEW.name := NEW.name || hstore('name', (NEW.name -> ('name:'||default_language)));
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
@@ -2313,7 +2313,7 @@ BEGIN
|
|||||||
hadcountry := false;
|
hadcountry := false;
|
||||||
FOR location IN
|
FOR location IN
|
||||||
select placex.place_id, osm_type, osm_id,
|
select placex.place_id, osm_type, osm_id,
|
||||||
CASE WHEN class = 'place' and type = 'postcode' THEN 'name' => postcode ELSE name END as name,
|
CASE WHEN class = 'place' and type = 'postcode' THEN hstore('name', postcode) ELSE name END as name,
|
||||||
class, type, admin_level, true as fromarea, true as isaddress,
|
class, type, admin_level, true as fromarea, true as isaddress,
|
||||||
CASE WHEN rank_address = 0 THEN 100 WHEN rank_address = 11 THEN 5 ELSE rank_address END as rank_address,
|
CASE WHEN rank_address = 0 THEN 100 WHEN rank_address = 11 THEN 5 ELSE rank_address END as rank_address,
|
||||||
0 as distance, calculated_country_code
|
0 as distance, calculated_country_code
|
||||||
@@ -2346,7 +2346,7 @@ BEGIN
|
|||||||
|
|
||||||
FOR location IN
|
FOR location IN
|
||||||
select placex.place_id, osm_type, osm_id,
|
select placex.place_id, osm_type, osm_id,
|
||||||
CASE WHEN class = 'place' and type = 'postcode' THEN 'name' => postcode ELSE name END as name,
|
CASE WHEN class = 'place' and type = 'postcode' THEN hstore('name', postcode) ELSE name END as name,
|
||||||
class, type, admin_level, fromarea, isaddress,
|
class, type, admin_level, fromarea, 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,
|
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,calculated_country_code
|
distance,calculated_country_code
|
||||||
@@ -2391,7 +2391,7 @@ BEGIN
|
|||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
IF searchcountrycode IS NOT NULL THEN
|
IF searchcountrycode IS NOT NULL THEN
|
||||||
location := ROW(null, null, null, 'ref'=>searchcountrycode, 'place', 'country_code', null, true, false, 4, 0)::addressline;
|
location := ROW(null, null, null, hstore('ref', searchcountrycode), 'place', 'country_code', null, true, false, 4, 0)::addressline;
|
||||||
RETURN NEXT location;
|
RETURN NEXT location;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
@@ -2402,12 +2402,12 @@ BEGIN
|
|||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
IF searchhousenumber IS NOT NULL THEN
|
IF searchhousenumber IS NOT NULL THEN
|
||||||
location := ROW(in_place_id, null, null, 'ref'=>searchhousenumber, 'place', 'house_number', null, true, true, 28, 0)::addressline;
|
location := ROW(in_place_id, null, null, hstore('ref', searchhousenumber), 'place', 'house_number', null, true, true, 28, 0)::addressline;
|
||||||
RETURN NEXT location;
|
RETURN NEXT location;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
IF searchpostcode IS NOT NULL THEN
|
IF searchpostcode IS NOT NULL THEN
|
||||||
location := ROW(null, null, null, 'ref'=>searchpostcode, 'place', 'postcode', null, true, true, 5, 0)::addressline;
|
location := ROW(null, null, null, hstore('ref', searchpostcode), 'place', 'postcode', null, true, true, 5, 0)::addressline;
|
||||||
RETURN NEXT location;
|
RETURN NEXT location;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
|
|||||||
@@ -109,6 +109,7 @@
|
|||||||
$pgver = (float) CONST_Postgresql_Version;
|
$pgver = (float) CONST_Postgresql_Version;
|
||||||
if ($pgver < 9.1) {
|
if ($pgver < 9.1) {
|
||||||
pgsqlRunScriptFile(CONST_Path_Postgresql_Contrib.'/hstore.sql');
|
pgsqlRunScriptFile(CONST_Path_Postgresql_Contrib.'/hstore.sql');
|
||||||
|
pgsqlRunScriptFile(CONST_BasePath.'/sql/hstore_compatability_9_0.sql');
|
||||||
} else {
|
} else {
|
||||||
pgsqlRunScript('CREATE EXTENSION hstore');
|
pgsqlRunScript('CREATE EXTENSION hstore');
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user