pggeodb.nancy.inra.fr/db_robot - db_robot on pggeodb.nancy.inra.fr
Previous topic Chapter index Next topic

Function: _add_raster_constraint_blocksize

 

 

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
Previous topic Chapter index Next topic