$sTemplate .= file_get_contents($sBasePath.'interpolation.sql');
$sTemplate .= file_get_contents($sBasePath.'place_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);
if ($this->bEnableDiffUpdates) {
$sTemplate = str_replace('RETURN NEW; -- %DIFFUPDATES%', '--', $sTemplate);
$$
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[]
AS $$
DECLARE
--- /dev/null
+-- 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;
+