mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-26 11:08:13 +00:00
move postcode table triggers to own file
This commit is contained in:
@@ -656,6 +656,7 @@ class SetupFunctions
|
|||||||
$sTemplate .= file_get_contents($sBasePath.'interpolation.sql');
|
$sTemplate .= file_get_contents($sBasePath.'interpolation.sql');
|
||||||
$sTemplate .= file_get_contents($sBasePath.'place_triggers.sql');
|
$sTemplate .= file_get_contents($sBasePath.'place_triggers.sql');
|
||||||
$sTemplate .= file_get_contents($sBasePath.'placex_triggers.sql');
|
$sTemplate .= file_get_contents($sBasePath.'placex_triggers.sql');
|
||||||
|
$sTemplate .= file_get_contents($sBasePath.'postcode_triggers.sql');
|
||||||
$sTemplate = str_replace('{modulepath}', $this->sModulePath, $sTemplate);
|
$sTemplate = str_replace('{modulepath}', $this->sModulePath, $sTemplate);
|
||||||
if ($this->bEnableDiffUpdates) {
|
if ($this->bEnableDiffUpdates) {
|
||||||
$sTemplate = str_replace('RETURN NEW; -- %DIFFUPDATES%', '--', $sTemplate);
|
$sTemplate = str_replace('RETURN NEW; -- %DIFFUPDATES%', '--', $sTemplate);
|
||||||
|
|||||||
@@ -313,44 +313,6 @@ END;
|
|||||||
$$
|
$$
|
||||||
LANGUAGE plpgsql;
|
LANGUAGE plpgsql;
|
||||||
|
|
||||||
-- Trigger for updates of location_postcode
|
|
||||||
--
|
|
||||||
-- Computes the parent object the postcode most likely refers to.
|
|
||||||
-- This will be the place that determines the address displayed when
|
|
||||||
-- searching for this postcode.
|
|
||||||
CREATE OR REPLACE FUNCTION postcode_update() RETURNS
|
|
||||||
TRIGGER
|
|
||||||
AS $$
|
|
||||||
DECLARE
|
|
||||||
partition SMALLINT;
|
|
||||||
location RECORD;
|
|
||||||
BEGIN
|
|
||||||
IF NEW.indexed_status != 0 OR OLD.indexed_status = 0 THEN
|
|
||||||
RETURN NEW;
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
NEW.indexed_date = now();
|
|
||||||
|
|
||||||
partition := get_partition(NEW.country_code);
|
|
||||||
|
|
||||||
SELECT * FROM get_postcode_rank(NEW.country_code, NEW.postcode)
|
|
||||||
INTO NEW.rank_search, NEW.rank_address;
|
|
||||||
|
|
||||||
NEW.parent_place_id = 0;
|
|
||||||
FOR location IN
|
|
||||||
SELECT place_id
|
|
||||||
FROM getNearFeatures(partition, NEW.geometry, NEW.rank_search, '{}'::int[])
|
|
||||||
WHERE NOT isguess ORDER BY rank_address DESC LIMIT 1
|
|
||||||
LOOP
|
|
||||||
NEW.parent_place_id = location.place_id;
|
|
||||||
END LOOP;
|
|
||||||
|
|
||||||
RETURN NEW;
|
|
||||||
END;
|
|
||||||
$$
|
|
||||||
LANGUAGE plpgsql;
|
|
||||||
|
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION get_osm_rel_members(members TEXT[], member TEXT) RETURNS TEXT[]
|
CREATE OR REPLACE FUNCTION get_osm_rel_members(members TEXT[], member TEXT) RETURNS TEXT[]
|
||||||
AS $$
|
AS $$
|
||||||
DECLARE
|
DECLARE
|
||||||
|
|||||||
40
sql/functions/postcode_triggers.sql
Normal file
40
sql/functions/postcode_triggers.sql
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
-- Trigger functions for location_postcode table.
|
||||||
|
|
||||||
|
|
||||||
|
-- Trigger for updates of location_postcode
|
||||||
|
--
|
||||||
|
-- Computes the parent object the postcode most likely refers to.
|
||||||
|
-- This will be the place that determines the address displayed when
|
||||||
|
-- searching for this postcode.
|
||||||
|
CREATE OR REPLACE FUNCTION postcode_update()
|
||||||
|
RETURNS TRIGGER
|
||||||
|
AS $$
|
||||||
|
DECLARE
|
||||||
|
partition SMALLINT;
|
||||||
|
location RECORD;
|
||||||
|
BEGIN
|
||||||
|
IF NEW.indexed_status != 0 OR OLD.indexed_status = 0 THEN
|
||||||
|
RETURN NEW;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
NEW.indexed_date = now();
|
||||||
|
|
||||||
|
partition := get_partition(NEW.country_code);
|
||||||
|
|
||||||
|
SELECT * FROM get_postcode_rank(NEW.country_code, NEW.postcode)
|
||||||
|
INTO NEW.rank_search, NEW.rank_address;
|
||||||
|
|
||||||
|
NEW.parent_place_id = 0;
|
||||||
|
FOR location IN
|
||||||
|
SELECT place_id
|
||||||
|
FROM getNearFeatures(partition, NEW.geometry, NEW.rank_search, '{}'::int[])
|
||||||
|
WHERE NOT isguess ORDER BY rank_address DESC LIMIT 1
|
||||||
|
LOOP
|
||||||
|
NEW.parent_place_id = location.place_id;
|
||||||
|
END LOOP;
|
||||||
|
|
||||||
|
RETURN NEW;
|
||||||
|
END;
|
||||||
|
$$
|
||||||
|
LANGUAGE plpgsql;
|
||||||
|
|
||||||
Reference in New Issue
Block a user