From 678dcbd82abd466d894551e9b665972184123b3d Mon Sep 17 00:00:00 2001 From: Brian Quinion Date: Thu, 1 Nov 2012 01:47:30 +0000 Subject: [PATCH] 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 --- sql/functions.sql | 20 ++++++++++---------- utils/setup.php | 1 + 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/sql/functions.sql b/sql/functions.sql index 80a9538b..4d05d79b 100644 --- a/sql/functions.sql +++ b/sql/functions.sql @@ -950,9 +950,9 @@ BEGIN default_language := get_country_language_code(NEW.calculated_country_code); IF default_language IS NOT NULL 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 - 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; @@ -979,7 +979,7 @@ BEGIN RETURN NULL; END IF; - NEW.name := 'ref'=>NEW.postcode; + NEW.name := hstore('ref', NEW.postcode); IF NEW.calculated_country_code = 'gb' THEN @@ -1335,9 +1335,9 @@ BEGIN default_language := get_country_language_code(NEW.calculated_country_code); IF default_language IS NOT NULL 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 - 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; @@ -2313,7 +2313,7 @@ BEGIN hadcountry := false; FOR location IN 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, 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 @@ -2346,7 +2346,7 @@ BEGIN FOR location IN 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, 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 @@ -2391,7 +2391,7 @@ BEGIN END IF; 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; END IF; @@ -2402,12 +2402,12 @@ BEGIN END IF; 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; END IF; 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; END IF; diff --git a/utils/setup.php b/utils/setup.php index d17e6dd9..5cdb27fb 100755 --- a/utils/setup.php +++ b/utils/setup.php @@ -109,6 +109,7 @@ $pgver = (float) CONST_Postgresql_Version; if ($pgver < 9.1) { pgsqlRunScriptFile(CONST_Path_Postgresql_Contrib.'/hstore.sql'); + pgsqlRunScriptFile(CONST_BasePath.'/sql/hstore_compatability_9_0.sql'); } else { pgsqlRunScript('CREATE EXTENSION hstore'); } -- 2.39.5