From 277be294bc2364b1365947d6b9639c7359f443b5 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Mon, 10 Oct 2011 20:26:22 +0000 Subject: [PATCH] Clamp SRID in AddGeometryColumn, update expected topology test results to expect -1 being transformed to 0 (current official UNKNOWN SRID value). git-svn-id: http://svn.osgeo.org/postgis/trunk@7966 b70326c6-7e19-0410-871a-916f4a2858ee --- postgis/postgis.sql.in.c | 14 ++++++++++++-- topology/test/regress/legacy_predicate_expected | 4 ++-- topology/test/regress/legacy_query_expected | 4 ++-- topology/test/regress/st_remedgemodface_expected | 6 +++--- topology/test/regress/st_remedgenewface_expected | 6 +++--- 5 files changed, 22 insertions(+), 12 deletions(-) diff --git a/postgis/postgis.sql.in.c b/postgis/postgis.sql.in.c index 07403fe5d..be61af11f 100644 --- a/postgis/postgis.sql.in.c +++ b/postgis/postgis.sql.in.c @@ -1616,7 +1616,7 @@ LANGUAGE 'plpgsql' VOLATILE; -- Should also check the precision grid (future expansion). -- ----------------------------------------------------------------------- -CREATE OR REPLACE FUNCTION AddGeometryColumn(catalog_name varchar,schema_name varchar,table_name varchar,column_name varchar,new_srid integer,new_type varchar,new_dim integer, use_typmod boolean DEFAULT true) +CREATE OR REPLACE FUNCTION AddGeometryColumn(catalog_name varchar,schema_name varchar,table_name varchar,column_name varchar,new_srid_in integer,new_type varchar,new_dim integer, use_typmod boolean DEFAULT true) RETURNS text AS $$ @@ -1625,6 +1625,7 @@ DECLARE sr varchar; real_schema name; sql text; + new_srid integer; BEGIN @@ -1662,12 +1663,21 @@ BEGIN -- Verify SRID - IF ( new_srid != 0 AND new_srid != -1) THEN + IF ( new_srid_in > 0 ) THEN + IF new_srid_in >= 999000 THEN + RAISE EXCEPTION 'AddGeometryColumns() - SRID must be < 999000'; + END IF; + new_srid := new_srid_in; SELECT SRID INTO sr FROM spatial_ref_sys WHERE SRID = new_srid; IF NOT FOUND THEN RAISE EXCEPTION 'AddGeometryColumns() - invalid SRID'; RETURN 'fail'; END IF; + ELSE + new_srid := ST_SRID('POINT EMPTY'::geometry); + IF ( new_srid_in != new_srid ) THEN + RAISE NOTICE 'SRID value % converted to the officially unknown SRID value %', new_srid_in, new_srid; + END IF; END IF; diff --git a/topology/test/regress/legacy_predicate_expected b/topology/test/regress/legacy_predicate_expected index 72a284df7..516b5e0ac 100644 --- a/topology/test/regress/legacy_predicate_expected +++ b/topology/test/regress/legacy_predicate_expected @@ -10,13 +10,13 @@ BEGIN 3 COMMIT 4 -features.big_parcels.the_geom SRID:-1 TYPE:MULTIPOLYGON DIMS:2 +features.big_parcels.the_geom SRID:0 TYPE:MULTIPOLYGON DIMS:2 P1P2|POLYGON((21 6,9 6,9 14,9 22,21 22,35 22,35 14,35 6,21 6)) P3P4|MULTIPOLYGON(((47 14,47 6,35 6,35 14,35 22,47 22,47 14)),((25 30,17 30,17 40,31 40,31 30,25 30))) F3F6|POLYGON((21 14,21 6,9 6,9 14,9 22,21 22,21 14)) P1|F3F6 5 -features.big_signs.the_geom SRID:-1 TYPE:MULTIPOINT DIMS:2 +features.big_signs.the_geom SRID:0 TYPE:MULTIPOINT DIMS:2 S1S2|MULTIPOINT(21 14,35 14) BEGIN POINT/POINT INTERSECTS diff --git a/topology/test/regress/legacy_query_expected b/topology/test/regress/legacy_query_expected index 3b05e9f21..f2036a67b 100644 --- a/topology/test/regress/legacy_query_expected +++ b/topology/test/regress/legacy_query_expected @@ -10,13 +10,13 @@ BEGIN 3 COMMIT 4 -features.big_parcels.the_geom SRID:-1 TYPE:MULTIPOLYGON DIMS:2 +features.big_parcels.the_geom SRID:0 TYPE:MULTIPOLYGON DIMS:2 P1P2|POLYGON((21 6,9 6,9 14,9 22,21 22,35 22,35 14,35 6,21 6)) P3P4|MULTIPOLYGON(((47 14,47 6,35 6,35 14,35 22,47 22,47 14)),((25 30,17 30,17 40,31 40,31 30,25 30))) F3F6|POLYGON((21 14,21 6,9 6,9 14,9 22,21 22,21 14)) P1|F3F6 5 -features.big_signs.the_geom SRID:-1 TYPE:MULTIPOINT DIMS:2 +features.big_signs.the_geom SRID:0 TYPE:MULTIPOINT DIMS:2 S1S2|MULTIPOINT(21 14,35 14) BEGIN P1|1|POLYGON((21 14,21 6,9 6,9 14,9 22,21 22,21 14)) diff --git a/topology/test/regress/st_remedgemodface_expected b/topology/test/regress/st_remedgemodface_expected index 69176c1e3..8613e7f68 100644 --- a/topology/test/regress/st_remedgemodface_expected +++ b/topology/test/regress/st_remedgemodface_expected @@ -193,9 +193,9 @@ BEGIN 2 3 COMMIT -features.land_parcels.the_geom SRID:-1 TYPE:MULTIPOLYGON DIMS:2 -features.city_streets.the_geom SRID:-1 TYPE:MULTILINESTRING DIMS:2 -features.traffic_signs.the_geom SRID:-1 TYPE:MULTIPOINT DIMS:2 +features.land_parcels.the_geom SRID:0 TYPE:MULTIPOLYGON DIMS:2 +features.city_streets.the_geom SRID:0 TYPE:MULTILINESTRING DIMS:2 +features.traffic_signs.the_geom SRID:0 TYPE:MULTIPOINT DIMS:2 ERROR: TopoGeom 4 in layer 3 (features.city_streets.feature) cannot be represented dropping edge 3 ERROR: TopoGeom 2 in layer 3 (features.city_streets.feature) cannot be represented dropping edge 4 ERROR: TopoGeom 2 in layer 3 (features.city_streets.feature) cannot be represented dropping edge 5 diff --git a/topology/test/regress/st_remedgenewface_expected b/topology/test/regress/st_remedgenewface_expected index 0184a7368..ded283d1a 100644 --- a/topology/test/regress/st_remedgenewface_expected +++ b/topology/test/regress/st_remedgenewface_expected @@ -223,9 +223,9 @@ BEGIN 2 3 COMMIT -features.land_parcels.the_geom SRID:-1 TYPE:MULTIPOLYGON DIMS:2 -features.city_streets.the_geom SRID:-1 TYPE:MULTILINESTRING DIMS:2 -features.traffic_signs.the_geom SRID:-1 TYPE:MULTIPOINT DIMS:2 +features.land_parcels.the_geom SRID:0 TYPE:MULTIPOLYGON DIMS:2 +features.city_streets.the_geom SRID:0 TYPE:MULTILINESTRING DIMS:2 +features.traffic_signs.the_geom SRID:0 TYPE:MULTIPOINT DIMS:2 ERROR: TopoGeom 4 in layer 3 (features.city_streets.feature) cannot be represented dropping edge 3 ERROR: TopoGeom 2 in layer 3 (features.city_streets.feature) cannot be represented dropping edge 4 ERROR: TopoGeom 2 in layer 3 (features.city_streets.feature) cannot be represented dropping edge 5 -- 2.49.0