LANGUAGE 'sql' VOLATILE STRICT
COST 100;
-------------------------------------------------------------------------------
--- AddRasterColumn
-------------------------------------------------------------------------------
-CREATE OR REPLACE FUNCTION AddRasterColumn(
- p_catalog_name varchar,
- p_schema_name varchar,
- p_table_name varchar,
- p_column_name varchar,
- p_srid integer,
- p_pixel_types varchar[],
- p_out_db boolean,
- p_regular_blocking boolean,
- p_nodata_values double precision[],
- p_scale_x double precision,
- p_scale_y double precision,
- p_blocksize_x integer,
- p_blocksize_y integer,
- p_extent geometry
-)
- RETURNS text AS
- $$
- DECLARE
- sql text;
- real_schema name;
- srid_into varchar;
- geometry_op_into varchar;
- pixel_types varchar[];
- pixel_types_size integer := 0;
- pixel_types_found integer := 0;
- nodata_values_size integer := 0;
-
- BEGIN
-
- RAISE NOTICE 'The set of AddRasterColumn functions are deprecated as the table raster_columns is now a view. This function will still continue to add the specified raster column to the specified table. To apply constraints, use AddRasterConstraints after loading the raster column with data';
-
- -- Validate required parametersa and combinations
- IF ( (p_catalog_name IS NULL) OR (p_schema_name IS NULL)
- OR (p_table_name IS NULL) OR (p_column_name IS NULL) ) THEN
- RAISE EXCEPTION 'Name of catalog, schema, table or column IS NULL, value expected';
- RETURN 'fail';
- END IF;
-
- -- Verify SCHEMA
- IF ( p_schema_name IS NOT NULL AND p_schema_name != '' ) THEN
- sql := 'SELECT nspname FROM pg_namespace '
- || 'WHERE text(nspname) = ' || quote_literal(p_schema_name)
- || 'LIMIT 1';
- --RAISE DEBUG '%', sql;
- EXECUTE sql INTO real_schema;
-
- IF ( real_schema IS NULL ) THEN
- RAISE EXCEPTION 'Schema % is not a valid schemaname', quote_literal(p_schema_name);
- RETURN 'fail';
- END IF;
- END IF;
-
- IF ( real_schema IS NULL ) THEN
- --RAISE DEBUG 'Detecting schema';
- sql := 'SELECT n.nspname AS schemaname '
- || 'FROM pg_catalog.pg_class c '
- || 'JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace '
- || 'WHERE c.relkind = ' || quote_literal('r')
- || ' AND n.nspname NOT IN ('
- || quote_literal('pg_catalog') || ', ' || quote_literal('pg_toast') || ')'
- || ' AND pg_catalog.pg_table_is_visible(c.oid)'
- || ' AND c.relname = ' || quote_literal(p_table_name);
- --RAISE DEBUG '%', sql;
- EXECUTE sql INTO real_schema;
-
- IF ( real_schema IS NULL ) THEN
- RAISE EXCEPTION 'Table % does not occur in the search_path',
- quote_literal(p_table_name);
- RETURN 'fail';
- END IF;
- END IF;
-
- -- Add raster column to target table
- sql := 'ALTER TABLE '
- || quote_ident(real_schema) || '.' || quote_ident(p_table_name)
- || ' ADD COLUMN ' || quote_ident(p_column_name) || ' raster ';
- --RAISE DEBUG '%', sql;
- EXECUTE sql;
-
-
- RETURN p_schema_name || '.' || p_table_name || '.' || p_column_name
- || ' srid:' || p_srid::text
- || ' pixel_types:' || p_pixel_types::text
- || ' out_db:' || p_out_db::text
- || ' regular_blocking:' || p_regular_blocking::text
- || ' nodata_values:' || COALESCE(quote_literal(p_nodata_values::text), 'NULL')
- || ' scale_x:' || COALESCE(quote_literal(p_scale_x), 'NULL')
- || ' scale_y:' || COALESCE(quote_literal(p_scale_y), 'NULL')
- || ' blocksize_x:' || COALESCE(quote_literal(p_blocksize_x), 'NULL')
- || ' blocksize_y:' || COALESCE(quote_literal(p_blocksize_y), 'NULL')
- || ' extent:' || COALESCE(ST_AsText(p_extent), 'NULL');
-
- END;
- $$
- LANGUAGE 'plpgsql' VOLATILE;
-
-
-------------------------------------------------------------------------------
--- AddRasterColumn (with default catalog)
--------------------------------------------------------------------------------
-CREATE OR REPLACE FUNCTION AddRasterColumn(schema varchar,
- p_table varchar,
- p_column varchar,
- p_srid integer,
- p_pixel_types varchar[],
- p_out_db boolean,
- p_regular_blocking boolean,
- p_nodata_values double precision[],
- p_scale_x double precision,
- p_scale_y double precision,
- p_blocksize_x integer,
- p_blocksize_y integer,
- p_extent geometry)
- RETURNS text AS
- $$
- DECLARE
- ret text;
- BEGIN
- SELECT AddRasterColumn('',$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13) INTO ret;
- RETURN ret;
- END;
- $$
- LANGUAGE 'plpgsql' STABLE;
-
-
-------------------------------------------------------------------------------
--- AddRasterColumn (with default catalog and schema)
--------------------------------------------------------------------------------
-CREATE OR REPLACE FUNCTION AddRasterColumn(p_table varchar,
- p_column varchar,
- p_srid integer,
- p_pixel_types varchar[],
- p_out_db boolean,
- p_regular_blocking boolean,
- p_nodata_values double precision[],
- p_scale_x double precision,
- p_scale_y double precision,
- p_blocksize_x integer,
- p_blocksize_y integer,
- p_extent geometry)
- RETURNS text AS
- $$
- DECLARE
- ret text;
- BEGIN
- SELECT AddRasterColumn('','',$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12) INTO ret;
- RETURN ret;
- END;
- $$
- LANGUAGE 'plpgsql' STABLE;
-
-
--------------------------------------------------------------------------------
--- DropRasterColumn
--------------------------------------------------------------------------------
--- FIXME: Use 'name' type for table,column and other names
--------------------------------------------------------------------------------
-CREATE OR REPLACE FUNCTION DropRasterColumn(catalog_name varchar,
- schema_name varchar,
- table_name varchar,
- column_name varchar)
- RETURNS text AS
- $$
- DECLARE
- myrec record;
- real_schema name;
- okay boolean;
- BEGIN
- RAISE NOTICE 'The set of DropRasterColumn functions are deprecated as the table raster_columns is now a view. This function will still continue to drop the specified raster column and related constraints from the specified table. To drop a raster column, use the function DropRasterConstraints and call ALTER TABLE ... DROP COLUMN';
-
- -- Find, check or fix schema_name
- IF ( schema_name != '' ) THEN
- okay = 'f';
-
- FOR myrec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP
- okay := 't';
- END LOOP;
-
- IF ( okay <> 't' ) THEN
- RAISE NOTICE 'invalid schema name - using current_schema()';
- SELECT current_schema() INTO real_schema;
- ELSE
- real_schema = schema_name;
- END IF;
- ELSE
- SELECT current_schema() INTO real_schema;
- END IF;
-
- -- Find out if the column is in the raster_columns table
- okay = 'f';
- FOR myrec IN SELECT * FROM raster_columns WHERE r_table_schema = text(real_schema)
- AND r_table_name = table_name AND r_raster_column = column_name LOOP
- okay := 't';
- END LOOP;
- IF (okay <> 't') THEN
- RAISE EXCEPTION 'column % not found in raster_columns table', column_name;
- RETURN 'f';
- END IF;
-
- -- Remove column constraints
- EXECUTE 'SELECT DropRasterConstraints(' || quote_literal(real_schema) || ',' || quote_literal(table_name) || ',' || quote_literal(column_name) || ')';
-
- -- Remove table column
- EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) || '.'
- || quote_ident(table_name) || ' DROP COLUMN '
- || quote_ident(column_name);
-
- RETURN schema_name || '.' || table_name || '.' || column_name ||' effectively removed.';
- END;
- $$
- LANGUAGE 'plpgsql' VOLATILE STRICT; -- WITH (isstrict);
-
-
------------------------------------------------------------------------
--- DropRasterColumn (with default catalog name)
------------------------------------------------------------------------
-CREATE OR REPLACE FUNCTION DropRasterColumn(schema_name varchar,
- table_name varchar,
- column_name varchar)
- RETURNS text AS
- $$
- DECLARE
- ret text;
- BEGIN
- SELECT DropRasterColumn('', schema_name, table_name, column_name) INTO ret;
- RETURN ret;
- END;
- $$
- LANGUAGE 'plpgsql' VOLATILE STRICT; -- WITH (isstrict);
-
------------------------------------------------------------------------
--- DropRasterColumn (with default catalog and schema name)
------------------------------------------------------------------------
-CREATE OR REPLACE FUNCTION DropRasterColumn(table_name varchar,
- column_name varchar)
- RETURNS text AS
- $$
- DECLARE
- ret text;
- BEGIN
- SELECT DropRasterColumn('', '', table_name, column_name) INTO ret;
- RETURN ret;
- END;
- $$
- LANGUAGE 'plpgsql' VOLATILE STRICT; -- WITH (isstrict);
-
------------------------------------------------------------------------
--- DropRasterTable
--- Drop a table and all its references in raster_columns
------------------------------------------------------------------------
-CREATE OR REPLACE FUNCTION DropRasterTable(catalog_name varchar,
- schema_name varchar,
- table_name varchar)
- RETURNS text AS
- $$
- DECLARE
- real_schema name;
- BEGIN
- RAISE NOTICE 'The set of DropRasterTable functions are deprecated as the table raster_columns is now a view. This function will still continue to drop the specified table. To drop a table, use DROP TABLE';
-
- IF ( schema_name = '' ) THEN
- SELECT current_schema() into real_schema;
- ELSE
- real_schema = schema_name;
- END IF;
-
- -- Remove table
- EXECUTE 'DROP TABLE ' || quote_ident(real_schema) || '.'
- || quote_ident(table_name);
-
- RETURN real_schema || '.' || table_name || ' effectively dropped.';
- END;
- $$
- LANGUAGE 'plpgsql' VOLATILE STRICT; -- WITH (isstrict);
-
------------------------------------------------------------------------
--- DropRasterTable (with default catalog name)
--- Drop a table and all its references in raster_columns
------------------------------------------------------------------------
-CREATE OR REPLACE FUNCTION DropRasterTable(schema_name varchar,
- table_name varchar)
- RETURNS text AS
- $$
- DECLARE
- ret text;
- BEGIN
- SELECT DropRasterTable('', schema_name, table_name) INTO ret;
- RETURN ret;
- END;
- $$
- LANGUAGE 'plpgsql' VOLATILE STRICT; -- WITH (isstrict);
-
------------------------------------------------------------------------
--- DropRasterTable (with default catalog and schema name)
--- Drop a table and all its references in raster_columns
--- For PG>=73 use current_schema()
------------------------------------------------------------------------
-CREATE OR REPLACE FUNCTION DropRasterTable(table_name varchar)
- RETURNS text AS
- $$
- DECLARE
- ret text;
- BEGIN
- SELECT DropRasterTable('', '', table_name) INTO ret;
- RETURN ret;
- END;
- $$
- LANGUAGE 'plpgsql' VOLATILE STRICT; -- WITH (isstrict);
-
-------------------------------------------------------------------
-- END
-------------------------------------------------------------------