Src |
CREATE FUNCTION "URX_PUBLIC"."_raster_constraint_info_scale"(rastschema name, rasttable name, rastcolumn name, axis character)
RETURNS double precision AS
$BODY$
WITH c AS (SELECT
regexp_replace(
replace(
split_part(
split_part(s.consrc, ' = ', 2),
'::', 1
),
'round(', ''
),
'[ ''''\(\)]', '', 'g'
)::text AS val
FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
WHERE n.nspname = $1
AND c.relname = $2
AND a.attname = $3
AND a.attrelid = c.oid
AND s.connamespace = n.oid
AND s.conrelid = c.oid
AND a.attnum = ANY (s.conkey)
AND s.consrc LIKE '%st_scale' || $4 || '(% = %')
-- if it is a comma separated list of two numbers then need to use round
SELECT CASE WHEN split_part(c.val,',', 2) > ''
THEN round( split_part(c.val, ',',1)::numeric, split_part(c.val,',',2)::integer )::float8
ELSE c.val::float8 END
FROM c;
$BODY$
LANGUAGE 'sql' STABLESTRICT ;
|