]> granicus.if.org Git - postgis/commitdiff
add pretty function to return pretty name and use in postgis_constraint_type (seems...
authorRegina Obe <lr@pcorp.us>
Thu, 30 Jun 2011 19:18:00 +0000 (19:18 +0000)
committerRegina Obe <lr@pcorp.us>
Thu, 30 Jun 2011 19:18:00 +0000 (19:18 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@7529 b70326c6-7e19-0410-871a-916f4a2858ee

postgis/postgis.sql.in.c

index 04f1a8f598fc69bc3afd13e72fb3a66fedf424c6..b437bf5920ff5c5f62af775a6dffdcdaa8041211 100644 (file)
@@ -4784,8 +4784,88 @@ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
 \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
@@ -4801,9 +4881,12 @@ SELECT replace(replace(split_part(s.consrc, ' = ', 2), ')', ''), '(', '')::integ
 $$\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
@@ -4831,6 +4914,7 @@ SELECT  replace(split_part(s.consrc, ' = ', 2), ')', '')::integer
 $$\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