Schema
public
Owner
albenard
Descriptions
There is no description for function _add_raster_constraint_blocksize
Options
Option | Value |
---|---|
Returns |
boolean |
Language |
plpgsql |
Parameters |
rastschema name rasttable name rastcolumn name axis text |
Definition
CREATE OR REPLACE FUNCTION public._add_raster_constraint_blocksize (
rastschema name,
rasttable name,
rastcolumn name,
axis text
)
RETURNS boolean AS
$span$
DECLARE
fqtn text;
cn name;
sql text;
attrset integer[];
attr integer;
BEGIN
IF lower($4) != 'width' AND lower($4) != 'height' THEN
RAISE EXCEPTION 'axis must be either "width" or "height"';
RETURN FALSE;
END IF;
fqtn := '';
IF length($1) > 0 THEN
fqtn := quote_ident($1) || '.';
END IF;
fqtn := fqtn || quote_ident($2);
cn := 'enforce_' || $4 || '_' || $3;
sql := 'SELECT st_' || $4 || '('
|| quote_ident($3)
|| ') FROM ' || fqtn
|| ' GROUP BY 1 ORDER BY count(*) DESC';
BEGIN
attrset := ARRAY[]::integer[];
FOR attr IN EXECUTE sql LOOP
attrset := attrset || attr;
END LOOP;
EXCEPTION WHEN OTHERS THEN
RAISE NOTICE 'Unable to get the % of a sample raster: % (%)',
$4, SQLERRM, SQLSTATE;
RETURN FALSE;
END;
sql := 'ALTER TABLE ' || fqtn
|| ' ADD CONSTRAINT ' || quote_ident(cn)
|| ' CHECK (st_' || $4 || '('
|| quote_ident($3)
|| ') IN (' || array_to_string(attrset, ',') || '))';
RETURN public._add_raster_constraint(cn, sql);
END;
$span$
LANGUAGE 'plpgsql'
VOLATILE
RETURNS NULL ON NULL INPUT
SECURITY INVOKER
COST 100;
This file was generated with SQL Manager for PostgreSQL (www.pgsqlmanager.com) at 26/02/2014 11:51 |