\r
#ifdef GSERIALIZED_ON\r
---------------------------------------------------------------\r
--- GEOMETRY_COLUMNS view\r
+-- GEOMETRY_COLUMNS view support functions\r
---------------------------------------------------------------\r
+-- New helper function so we can keep list of valid geometry types in one place --\r
+-- Maps old names to pramsey beautiful names but can take old name or new name as input\r
+-- By default returns new name but can be overridden to return old name for old constraint like support\r
+CREATE OR REPLACE FUNCTION postgis_type_name(geomname varchar, coord_dimension integer, use_new_name boolean DEFAULT true) \r
+ RETURNS varchar\r
+AS\r
+$$\r
+ SELECT CASE WHEN $3 THEN new_name ELSE old_name END As geomname\r
+ FROM \r
+ ( VALUES\r
+ ('GEOMETRY', 'Geometry', 2) ,\r
+ ('GEOMETRY', 'Geometry', 3) ,\r
+ ('GEOMETRY', 'Geometry', 4) ,\r
+ ('GEOMETRYCOLLECTION', 'GeometryCollection', 2) ,\r
+ ('GEOMETRYCOLLECTION', 'GeometryCollectionZ', 3) ,\r
+ ('GEOMETRYCOLLECTIONM', 'GeometryCollectionM', 3) ,\r
+ ('GEOMETRYCOLLECTION', 'GeometryCollectionZM', 4) ,\r
+ ('POINT', 'Point',2) ,\r
+ ('POINTM','PointM',3) ,\r
+ ('POINT', 'PointZ',3) ,\r
+ ('POINT', 'PointZM',4) ,\r
+ ('MULTIPOINT','MultiPoint',2) ,\r
+ ('MULTIPOINT','MultiPointZ',3) ,\r
+ ('MULTIPOINTM','MultiPointM',3) ,\r
+ ('MULTIPOINT','MultiPointZM',4) ,\r
+ ('POLYGON', 'Polygon',2) ,\r
+ ('POLYGON', 'PolygonZ',3) ,\r
+ ('POLYGONM', 'PolygonM',3) ,\r
+ ('POLYGON', 'PolygonZM',4) ,\r
+ ('MULTIPOLYGON', 'MultiPolygon',2) ,\r
+ ('MULTIPOLYGON', 'MultiPolygonZ',3) ,\r
+ ('MULTIPOLYGONM', 'MultiPolygonM',3) ,\r
+ ('MULTIPOLYGON', 'MultiPolygonZM',4) ,\r
+ ('MULTILINESTRING', 'MultiLineString',2) ,\r
+ ('MULTILINESTRINGM', 'MultiLineStringM',3) ,\r
+ ('MULTILINESTRING', 'MultiLineStringZM',4) ,\r
+ ('LINESTRING', 'LineString',2) ,\r
+ ('LINESTRINGM', 'LineStringM',3) ,\r
+ ('LINESTRING', 'LineStringZM',4) ,\r
+ ('CIRCULARSTRING', 'CircularString',2) ,\r
+ ('CIRCULARSTRING', 'CircularStringZ',3) ,\r
+ ('CIRCULARSTRINGM', 'CircularStringM',3) ,\r
+ ('CIRCULARSTRING', 'CircularStringZM',4) ,\r
+ ('COMPOUNDCURVE', 'CompoundCurve',2) ,\r
+ ('COMPOUNDCURVE', 'CompoundCurveZ',3) ,\r
+ ('COMPOUNDCURVEM', 'CompoundCurveM',3) ,\r
+ ('COMPOUNDCURVE', 'CompoundCurveZM',4) ,\r
+ ('CURVEPOLYGON', 'CompundPolygon',2) ,\r
+ ('CURVEPOLYGON', 'CompundPolygonZ',3) ,\r
+ ('CURVEPOLYGONM', 'CompundPolygonM',3) ,\r
+ ('CURVEPOLYGON', 'CompundPolygonZM',4) ,\r
+ ('MULTICURVE', 'MultiCurve',2 ) ,\r
+ ('MULTICURVE', 'MultiCurveZ',3 ) ,\r
+ ('MULTICURVEM', 'MultiCurveM',3 ) ,\r
+ ('MULTICURVEM', 'MultiCurveZM',4 ) ,\r
+ ('MULTISURFACE', 'MultiSurface', 2) ,\r
+ ('MULTISURFACE', 'MultiSurfaceZ', 3) ,\r
+ ('MULTISURFACEM', 'MultiSurfaceM', 3) ,\r
+ ('MULTISURFACE', 'MultiSurfaceZM', 4) ,\r
+ ('POLYHEDRALSURFACE', 'PolyhedralSurface',2) ,\r
+ ('POLYHEDRALSURFACE', 'PolyhedralSurfaceZ',3) ,\r
+ ('POLYHEDRALSURFACEM', 'PolyhedralSurfaceM',3) ,\r
+ ('POLYHEDRALSURFACE', 'PolyhedralSurfaceZM',4) ,\r
+ ('TRIANGLE', 'TriangleZ',3) ,\r
+ ('TRIANGLEM', 'TriangleM',3) ,\r
+ ('TRIANGLE', 'TriangleZM',4) ,\r
+ ('TRIANGLE', 'Triangle',2) ,\r
+ ('TRIANGLE', 'TriangleZ',3) ,\r
+ ('TRIANGLEM', 'TriangleM',3) ,\r
+ ('TRIANGLE', 'TriangleZM',4) ,\r
+ ('TIN', 'TIN', 2),\r
+ ('TIN', 'TinZ', 3),\r
+ ('TIN', 'TinM', 3),\r
+ ('TIN', 'TinZM', 4) )\r
+ As g(old_name, new_name, coord_dimension)\r
+ WHERE (upper(old_name) = upper($1) OR upper(new_name) = upper($1))\r
+ AND coord_dimension = $2;\r
+$$\r
+language 'sql' IMMUTABLE STRICT COST 200;\r
+\r
CREATE FUNCTION postgis_constraint_srid(geomschema text, geomtable text, geomcolumn text) RETURNS integer AS\r
$$\r
SELECT replace(replace(split_part(s.consrc, ' = ', 2), ')', ''), '(', '')::integer\r
$$\r
LANGUAGE 'sql' STABLE STRICT;\r
\r
+-- support function to pull out geometry type from constraint check\r
+-- will return pretty name instead of ugly name\r
CREATE OR REPLACE FUNCTION postgis_constraint_type(geomschema text, geomtable text, geomcolumn text) RETURNS varchar AS\r
$$\r
-SELECT replace(split_part(s.consrc, '''', 2), ')', '')::varchar\r
+SELECT postgis_type_name(replace(split_part(s.consrc, '''', 2), ')', '')::varchar\r
+ , postgis_constraint_dims($1,$2,$3), true )\r
FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s\r
WHERE n.nspname = $1\r
AND c.relname = $2\r
$$\r
LANGUAGE 'sql' STABLE STRICT;\r
\r
+\r
CREATE OR REPLACE VIEW geometry_columns_v AS \r
SELECT current_database()::varchar(256) AS f_table_catalog, \r
n.nspname::varchar(256) AS f_table_schema, \r