Mercurial > gemma
view schema/isrs.sql @ 992:a978b2b26a88
Run do and cleanup of import jobs in own go routines with crash handler.
This way the import job may die badly w/o killing the job queue, too.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 22 Oct 2018 11:24:25 +0200 |
parents | 72430f050d90 |
children | d0a5bb018fc9 |
line wrap: on
line source
-- -- Types and functions for ISRS location codes -- BEGIN; -- -- Types -- -- Composite type: UN/LOCODE, fairway section, object reference, hectometre. -- See RIS-Index Encoding Guide CREATE TYPE isrs AS ( country_code char(2), -- ISO 3166 country code -- could be validated against countries table. locode char(3), -- without the country code: -- http://www.unece.org/cefact/locode/welcome.html fairway_section char(5), orc char(5), -- Object Reference Code hectometre int -- should be constrained to five digits ); CREATE TYPE isrsrange AS RANGE ( subtype = isrs ); -- -- Functions -- CREATE OR REPLACE FUNCTION isrs_fromText( isrs_text varchar ) RETURNS isrs AS $$ DECLARE isrs_len CONSTANT int = 20; BEGIN IF char_length(isrs_text) <> isrs_len THEN RAISE 'ISRS location code must be % characters long', isrs_len USING ERRCODE = 'invalid_parameter_value', DETAIL = 'Failing value: ' || isrs_text; ELSE RETURN CAST(( substring(isrs_text from 1 for 2), substring(isrs_text from 3 for 3), substring(isrs_text from 6 for 5), substring(isrs_text from 11 for 5), CAST(substring(isrs_text from 16 for 5) AS int)) AS isrs); END IF; END; $$ LANGUAGE plpgsql; COMMIT;