]> granicus.if.org Git - postgis/commitdiff
Add testing and drop deprecated functions (#202)
authorPaul Ramsey <pramsey@cleverelephant.ca>
Sat, 14 Nov 2009 00:40:37 +0000 (00:40 +0000)
committerPaul Ramsey <pramsey@cleverelephant.ca>
Sat, 14 Nov 2009 00:40:37 +0000 (00:40 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@4806 b70326c6-7e19-0410-871a-916f4a2858ee

postgis/postgis.sql.in.c
postgis/postgis_drop.sql.in.c [new file with mode: 0644]
utils/postgis_proc_upgrade.pl

index f470078f30b08b6d13e4015d7b3a0f54aec1269e..d4e5a0ed57299544353a9196244a4a10b3e6dd87 100644 (file)
@@ -356,6 +356,7 @@ CREATE OR REPLACE FUNCTION geometry(box3d_extent)
        RETURNS geometry
        AS 'MODULE_PATHNAME','BOX3D_to_LWGEOM'
        LANGUAGE 'C' IMMUTABLE STRICT;
+
 -- End of temporary hack
 
 -- Deprecation in 1.2.3
@@ -498,64 +499,6 @@ CREATE TYPE box2d (
        storage = plain
 );
 
----- BOX2D  support functions
-
--- Deprecation in 1.2.3
-CREATE OR REPLACE FUNCTION box2d_overleft(box2d, box2d)
-       RETURNS bool
-       AS 'MODULE_PATHNAME', 'BOX2D_overleft'
-       LANGUAGE 'C' IMMUTABLE STRICT;
-
--- Deprecation in 1.2.3
-CREATE OR REPLACE FUNCTION box2d_overright(box2d, box2d)
-       RETURNS bool
-       AS 'MODULE_PATHNAME', 'BOX2D_overright'
-       LANGUAGE 'C' IMMUTABLE STRICT;
-
--- Deprecation in 1.2.3
-CREATE OR REPLACE FUNCTION box2d_left(box2d, box2d)
-       RETURNS bool
-       AS 'MODULE_PATHNAME', 'BOX2D_left'
-       LANGUAGE 'C' IMMUTABLE STRICT;
-
--- Deprecation in 1.2.3
-CREATE OR REPLACE FUNCTION box2d_right(box2d, box2d)
-       RETURNS bool
-       AS 'MODULE_PATHNAME', 'BOX2D_right'
-       LANGUAGE 'C' IMMUTABLE STRICT;
-
--- Deprecation in 1.2.3
-CREATE OR REPLACE FUNCTION box2d_contain(box2d, box2d)
-       RETURNS bool
-       AS 'MODULE_PATHNAME', 'BOX2D_contain'
-       LANGUAGE 'C' IMMUTABLE STRICT;
-
--- Deprecation in 1.2.3
-CREATE OR REPLACE FUNCTION box2d_contained(box2d, box2d)
-       RETURNS bool
-       AS 'MODULE_PATHNAME', 'BOX2D_contained'
-       LANGUAGE 'C' IMMUTABLE STRICT;
-
--- Deprecation in 1.2.3
-CREATE OR REPLACE FUNCTION box2d_overlap(box2d, box2d)
-       RETURNS bool
-       AS 'MODULE_PATHNAME', 'BOX2D_overlap'
-       LANGUAGE 'C' IMMUTABLE STRICT;
-
--- Deprecation in 1.2.3
-CREATE OR REPLACE FUNCTION box2d_same(box2d, box2d)
-       RETURNS bool
-       AS 'MODULE_PATHNAME', 'BOX2D_same'
-       LANGUAGE 'C' IMMUTABLE STRICT;
-
--- Deprecation in 1.2.3
-CREATE OR REPLACE FUNCTION box2d_intersects(box2d, box2d)
-       RETURNS bool
-       AS 'MODULE_PATHNAME', 'BOX2D_intersects'
-       LANGUAGE 'C' IMMUTABLE STRICT;
-
-
--- lwgeom  operator support functions
 
 -------------------------------------------------------------------
 -- BTREE indexes
@@ -676,6 +619,18 @@ CREATE OPERATOR CLASS btree_geometry_ops
 -- GiST indexes
 -------------------------------------------------------------------
 
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION postgis_gist_sel (internal, oid, internal, int4)
+       RETURNS float8
+       AS 'MODULE_PATHNAME', 'LWGEOM_gist_sel'
+       LANGUAGE 'C';
+
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION postgis_gist_joinsel(internal, oid, internal, smallint)
+       RETURNS float8
+       AS 'MODULE_PATHNAME', 'LWGEOM_gist_joinsel'
+       LANGUAGE 'C';
+
 -- Deprecation in 1.5.0
 CREATE OR REPLACE FUNCTION st_postgis_gist_sel (internal, oid, internal, int4)
        RETURNS float8
@@ -760,6 +715,12 @@ CREATE OR REPLACE FUNCTION st_geometry_same(geometry, geometry)
        AS 'MODULE_PATHNAME', 'LWGEOM_samebox'
        LANGUAGE 'C' IMMUTABLE STRICT;
 
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION geometry_same(geometry, geometry)
+       RETURNS bool
+       AS 'MODULE_PATHNAME', 'LWGEOM_samebox'
+       LANGUAGE 'C' IMMUTABLE STRICT;
+
 CREATE OR REPLACE FUNCTION geometry_gist_sel (internal, oid, internal, int4)
        RETURNS float8
        AS 'MODULE_PATHNAME', 'LWGEOM_gist_sel'
@@ -3399,68 +3360,132 @@ LANGUAGE 'plpgsql' IMMUTABLE;
 -- CASTS
 ---------------------------------------------------------------
 
-CREATE OR REPLACE FUNCTION box2d(geometry)
-       RETURNS box2d
-       AS 'MODULE_PATHNAME','LWGEOM_to_BOX2DFLOAT4'
-       LANGUAGE 'C' IMMUTABLE STRICT;
+-- Legacy ST_ variants of casts, to be removed in 2.0
 
 -- Deprecation in 1.5.0
-CREATE OR REPLACE FUNCTION ST_box2d(geometry)
+CREATE OR REPLACE FUNCTION st_box2d(geometry)
        RETURNS box2d
        AS 'MODULE_PATHNAME','LWGEOM_to_BOX2DFLOAT4'
        LANGUAGE 'C' IMMUTABLE STRICT;
 
-CREATE OR REPLACE FUNCTION box3d(geometry)
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION st_box3d(geometry)
        RETURNS box3d
        AS 'MODULE_PATHNAME','LWGEOM_to_BOX3D'
        LANGUAGE 'C' IMMUTABLE STRICT;
 
 -- Deprecation in 1.5.0
-CREATE OR REPLACE FUNCTION ST_box3d(geometry)
+CREATE OR REPLACE FUNCTION st_box(geometry)
+       RETURNS box
+       AS 'MODULE_PATHNAME','LWGEOM_to_BOX'
+       LANGUAGE 'C' IMMUTABLE STRICT;
+
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION st_box2d(box3d)
+       RETURNS box2d
+       AS 'MODULE_PATHNAME','BOX3D_to_BOX2DFLOAT4'
+       LANGUAGE 'C' IMMUTABLE STRICT;
+
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION st_box3d(box2d)
        RETURNS box3d
-       AS 'MODULE_PATHNAME','LWGEOM_to_BOX3D'
+       AS 'MODULE_PATHNAME','BOX2DFLOAT4_to_BOX3D'
        LANGUAGE 'C' IMMUTABLE STRICT;
 
-CREATE OR REPLACE FUNCTION box(geometry)
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION st_box(box3d)
        RETURNS box
-       AS 'MODULE_PATHNAME','LWGEOM_to_BOX'
+       AS 'MODULE_PATHNAME','BOX3D_to_BOX'
        LANGUAGE 'C' IMMUTABLE STRICT;
 
 -- Deprecation in 1.5.0
-CREATE OR REPLACE FUNCTION ST_box(geometry)
-       RETURNS box
-       AS 'MODULE_PATHNAME','LWGEOM_to_BOX'
+CREATE OR REPLACE FUNCTION st_text(geometry)
+       RETURNS text
+       AS 'MODULE_PATHNAME','LWGEOM_to_text'
        LANGUAGE 'C' IMMUTABLE STRICT;
 
-CREATE OR REPLACE FUNCTION box2d(box3d)
-       RETURNS box2d
-       AS 'MODULE_PATHNAME','BOX3D_to_BOX2DFLOAT4'
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION st_geometry(box2d)
+       RETURNS geometry
+       AS 'MODULE_PATHNAME','BOX2DFLOAT4_to_LWGEOM'
        LANGUAGE 'C' IMMUTABLE STRICT;
 
 -- Deprecation in 1.5.0
-CREATE OR REPLACE FUNCTION ST_box2d(box3d)
-       RETURNS box2d
-       AS 'MODULE_PATHNAME','BOX3D_to_BOX2DFLOAT4'
+CREATE OR REPLACE FUNCTION st_geometry(box3d)
+       RETURNS geometry
+       AS 'MODULE_PATHNAME','BOX3D_to_LWGEOM'
        LANGUAGE 'C' IMMUTABLE STRICT;
 
-CREATE OR REPLACE FUNCTION box3d(box2d)
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION st_geometry(text)
+       RETURNS geometry
+       AS 'MODULE_PATHNAME','parse_WKT_lwgeom'
+       LANGUAGE 'C' IMMUTABLE STRICT;
+
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION st_geometry(chip)
+       RETURNS geometry
+       AS 'MODULE_PATHNAME','CHIP_to_LWGEOM'
+       LANGUAGE 'C' IMMUTABLE STRICT;
+
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION st_geometry(bytea)
+       RETURNS geometry
+       AS 'MODULE_PATHNAME','LWGEOM_from_bytea'
+       LANGUAGE 'C' IMMUTABLE STRICT;
+
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION st_bytea(geometry)
+       RETURNS bytea
+       AS 'MODULE_PATHNAME','LWGEOM_to_bytea'
+       LANGUAGE 'C' IMMUTABLE STRICT;
+
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION st_box3d_extent(box3d_extent)
        RETURNS box3d
-       AS 'MODULE_PATHNAME','BOX2DFLOAT4_to_BOX3D'
+       AS 'MODULE_PATHNAME', 'BOX3D_extent_to_BOX3D'
        LANGUAGE 'C' IMMUTABLE STRICT;
 
 -- Deprecation in 1.5.0
-CREATE OR REPLACE FUNCTION ST_box3d(box2d)
+CREATE OR REPLACE FUNCTION st_box2d(box3d_extent)
+       RETURNS box2d
+       AS 'MODULE_PATHNAME', 'BOX3D_to_BOX2DFLOAT4'
+       LANGUAGE 'C' IMMUTABLE STRICT;
+
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION st_geometry(box3d_extent)
+       RETURNS geometry
+       AS 'MODULE_PATHNAME','BOX3D_to_LWGEOM'
+       LANGUAGE 'C' IMMUTABLE STRICT;
+       
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
+               
+CREATE OR REPLACE FUNCTION box2d(geometry)
+       RETURNS box2d
+       AS 'MODULE_PATHNAME','LWGEOM_to_BOX2DFLOAT4'
+       LANGUAGE 'C' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION box3d(geometry)
        RETURNS box3d
-       AS 'MODULE_PATHNAME','BOX2DFLOAT4_to_BOX3D'
+       AS 'MODULE_PATHNAME','LWGEOM_to_BOX3D'
        LANGUAGE 'C' IMMUTABLE STRICT;
 
-CREATE OR REPLACE FUNCTION box(box3d)
+CREATE OR REPLACE FUNCTION box(geometry)
        RETURNS box
-       AS 'MODULE_PATHNAME','BOX3D_to_BOX'
+       AS 'MODULE_PATHNAME','LWGEOM_to_BOX'
        LANGUAGE 'C' IMMUTABLE STRICT;
 
--- Deprecation in 1.5.0
-CREATE OR REPLACE FUNCTION ST_box(box3d)
+CREATE OR REPLACE FUNCTION box2d(box3d)
+       RETURNS box2d
+       AS 'MODULE_PATHNAME','BOX3D_to_BOX2DFLOAT4'
+       LANGUAGE 'C' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION box3d(box2d)
+       RETURNS box3d
+       AS 'MODULE_PATHNAME','BOX2DFLOAT4_to_BOX3D'
+       LANGUAGE 'C' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION box(box3d)
        RETURNS box
        AS 'MODULE_PATHNAME','BOX3D_to_BOX'
        LANGUAGE 'C' IMMUTABLE STRICT;
@@ -3470,12 +3495,6 @@ CREATE OR REPLACE FUNCTION text(geometry)
        AS 'MODULE_PATHNAME','LWGEOM_to_text'
        LANGUAGE 'C' IMMUTABLE STRICT;
 
--- Deprecation in 1.5.0
-CREATE OR REPLACE FUNCTION ST_text(geometry)
-       RETURNS text
-       AS 'MODULE_PATHNAME','LWGEOM_to_text'
-       LANGUAGE 'C' IMMUTABLE STRICT;
-
 -- this is kept for backward-compatibility
 -- Deprecation in 1.2.3
 CREATE OR REPLACE FUNCTION box3dtobox(box3d)
@@ -3488,67 +3507,31 @@ CREATE OR REPLACE FUNCTION geometry(box2d)
        AS 'MODULE_PATHNAME','BOX2DFLOAT4_to_LWGEOM'
        LANGUAGE 'C' IMMUTABLE STRICT;
 
--- Deprecation in 1.5.0
-CREATE OR REPLACE FUNCTION ST_geometry(box2d)
-       RETURNS geometry
-       AS 'MODULE_PATHNAME','BOX2DFLOAT4_to_LWGEOM'
-       LANGUAGE 'C' IMMUTABLE STRICT;
-
 CREATE OR REPLACE FUNCTION geometry(box3d)
        RETURNS geometry
        AS 'MODULE_PATHNAME','BOX3D_to_LWGEOM'
        LANGUAGE 'C' IMMUTABLE STRICT;
 
--- Deprecation in 1.5.0
-CREATE OR REPLACE FUNCTION ST_geometry(box3d)
-       RETURNS geometry
-       AS 'MODULE_PATHNAME','BOX3D_to_LWGEOM'
-       LANGUAGE 'C' IMMUTABLE STRICT;
-
 CREATE OR REPLACE FUNCTION geometry(text)
        RETURNS geometry
        AS 'MODULE_PATHNAME','parse_WKT_lwgeom'
        LANGUAGE 'C' IMMUTABLE STRICT;
 
--- Deprecation in 1.5.0
-CREATE OR REPLACE FUNCTION ST_geometry(text)
-       RETURNS geometry
-       AS 'MODULE_PATHNAME','parse_WKT_lwgeom'
-       LANGUAGE 'C' IMMUTABLE STRICT;
-
 CREATE OR REPLACE FUNCTION geometry(chip)
        RETURNS geometry
        AS 'MODULE_PATHNAME','CHIP_to_LWGEOM'
        LANGUAGE 'C' IMMUTABLE STRICT;
 
--- Deprecation in 1.5.0
-CREATE OR REPLACE FUNCTION ST_geometry(chip)
-       RETURNS geometry
-       AS 'MODULE_PATHNAME','CHIP_to_LWGEOM'
-       LANGUAGE 'C' IMMUTABLE STRICT;
-
 CREATE OR REPLACE FUNCTION geometry(bytea)
        RETURNS geometry
        AS 'MODULE_PATHNAME','LWGEOM_from_bytea'
        LANGUAGE 'C' IMMUTABLE STRICT;
 
--- Deprecation in 1.5.0
-CREATE OR REPLACE FUNCTION ST_geometry(bytea)
-       RETURNS geometry
-       AS 'MODULE_PATHNAME','LWGEOM_from_bytea'
-       LANGUAGE 'C' IMMUTABLE STRICT;
-
 CREATE OR REPLACE FUNCTION bytea(geometry)
        RETURNS bytea
        AS 'MODULE_PATHNAME','LWGEOM_to_bytea'
        LANGUAGE 'C' IMMUTABLE STRICT;
 
--- Deprecation in 1.5.0
-CREATE OR REPLACE FUNCTION ST_bytea(geometry)
-       RETURNS bytea
-       AS 'MODULE_PATHNAME','LWGEOM_to_bytea'
-       LANGUAGE 'C' IMMUTABLE STRICT;
-
 -- 7.3+ explicit casting definitions
 CREATE CAST (geometry AS box2d) WITH FUNCTION box2d(geometry) AS IMPLICIT;
 CREATE CAST (geometry AS box3d) WITH FUNCTION box3d(geometry) AS IMPLICIT;
@@ -6185,3 +6168,4 @@ CREATE OR REPLACE FUNCTION ST_MinimumBoundingCircle(geometry)
  LANGUAGE 'sql' IMMUTABLE STRICT;
 COMMIT;
 
+#include "postgis_drop.sql.in.c"
\ No newline at end of file
diff --git a/postgis/postgis_drop.sql.in.c b/postgis/postgis_drop.sql.in.c
new file mode 100644 (file)
index 0000000..662a7b0
--- /dev/null
@@ -0,0 +1,43 @@
+-- First drop old aggregates
+DROP AGGREGATE IF EXISTS geomunion(geometry);
+DROP AGGREGATE IF EXISTS st_geomunion(geometry);
+DROP AGGREGATE IF EXISTS accum_old(geometry);
+DROP AGGREGATE IF EXISTS st_accum_old(geometry);
+
+-- Then drop old functions
+DROP FUNCTION IF EXISTS box2d_overleft(box2d, box2d);
+DROP FUNCTION IF EXISTS box2d_overright(box2d, box2d);
+DROP FUNCTION IF EXISTS box2d_left(box2d, box2d);
+DROP FUNCTION IF EXISTS box2d_right(box2d, box2d);
+DROP FUNCTION IF EXISTS box2d_contain(box2d, box2d);
+DROP FUNCTION IF EXISTS box2d_contained(box2d, box2d);
+DROP FUNCTION IF EXISTS box2d_overlap(box2d, box2d);
+DROP FUNCTION IF EXISTS box2d_same(box2d, box2d);
+DROP FUNCTION IF EXISTS box2d_intersects(box2d, box2d);
+DROP FUNCTION IF EXISTS box2d_overleft(box2d, box2d);
+DROP FUNCTION IF EXISTS st_box2d_overright(box2d, box2d);
+DROP FUNCTION IF EXISTS st_box2d_left(box2d, box2d);
+DROP FUNCTION IF EXISTS st_box2d_right(box2d, box2d);
+DROP FUNCTION IF EXISTS st_box2d_contain(box2d, box2d);
+DROP FUNCTION IF EXISTS st_box2d_contained(box2d, box2d);
+DROP FUNCTION IF EXISTS st_box2d_overlap(box2d, box2d);
+DROP FUNCTION IF EXISTS st_box2d_same(box2d, box2d);
+DROP FUNCTION IF EXISTS st_box2d_intersects(box2d, box2d);
+DROP FUNCTION IF EXISTS st_box2d_overleft(box2d, box2d);
+DROP FUNCTION IF EXISTS st_addbbox(geometry);
+DROP FUNCTION IF EXISTS st_dropbbox(geometry); 
+DROP FUNCTION IF EXISTS st_hasbbox(geometry); 
+DROP FUNCTION IF EXISTS cache_bbox();
+DROP FUNCTION IF EXISTS st_cache_bbox();
+DROP FUNCTION IF EXISTS transform_geometry(geometry,text,text,int);
+DROP FUNCTION IF EXISTS collector(geometry, geometry);
+DROP FUNCTION IF EXISTS st_collector(geometry, geometry);
+DROP FUNCTION IF EXISTS geom_accum (geometry[],geometry);
+DROP FUNCTION IF EXISTS st_geom_accum (geometry[],geometry);
+DROP FUNCTION IF EXISTS collect_garray (geometry[]);
+DROP FUNCTION IF EXISTS st_collect_garray (geometry[]);
+DROP FUNCTION IF EXISTS geosnoop(geometry);
+DROP FUNCTION IF EXISTS jtsnoop(geometry);
+DROP FUNCTION IF EXISTS st_noop(geometry);
+
+
index dbd9e274b521d73c230959f393fbcfa4764a7128..37978a44ff3fa3645698295ec145cc0650ff999f 100755 (executable)
@@ -139,25 +139,35 @@ open( INPUT, $sql_file ) || die "Couldn't open file: $sql_file\n";
 while(<INPUT>)
 {
 
-       if (m/^create or replace function/i)
+       next if ( /^\-\-/ );
+
+       #
+       # Allow through deprecations from postgis_drop.sql
+       #
+       print if ( /^drop function if exists/i );
+       print if ( /^drop aggregate if exists/i );
+
+       if ( /^create or replace function/i )
        {
                print $_;
+               my $endfunc = 0;
                while(<INPUT>)
                {
                        print $_;
-                       last if m/^\s*LANGUAGE '/;
+                       $endfunc = 1 if /^\s*LANGUAGE /;
+                       last if ( $endfunc && /\;/ );
                }
        }
 
 
-       if ( m/^create type (\w+)/i )
+       if ( /^create type (\w+)/i )
        {
                my $newtype = $1;
                my $def .= $_;
                while(<INPUT>)
                {
                        $def .= $_;
-                       last if m/\)/;
+                       last if /\)/;
                }
                my $ver = $version_from_num + 1;
                while( $version_from_num < $version_to_num && $ver <= $version_to_num )
@@ -190,8 +200,8 @@ while(<INPUT>)
                while(<INPUT>)
                {
                        $def .= $_;
-                       $aggtype = $1 if (m/basetype\s*=\s*([^,]*)\s*,/i);
-                       last if m/\);/;
+                       $aggtype = $1 if ( /basetype\s*=\s*([^,]*)\s*,/i );
+                       last if /\);/;
                }
                print "DROP AGGREGATE IF EXISTS $aggname($aggtype);\n";
                print $def;
@@ -206,8 +216,8 @@ while(<INPUT>)
                while(<INPUT>)
                {
                        $def .= $_;
-                       $optype = $1 if ( m/leftarg\s*=\s*(\w+)\s*,/i );
-                       last if m/\);/;
+                       $optype = $1 if ( /leftarg\s*=\s*(\w+)\s*,/i );
+                       last if /\);/;
                }
                my $opsig = $optype . " " . $opname;
                my $ver = $version_from_num + 1;
@@ -232,9 +242,9 @@ while(<INPUT>)
                while(<INPUT>)
                {
                        $def .= $_;
-                       $opctype = $1 if ( m/for type (\w+) /i );
-                       $opcidx = $1 if ( m/using (\w+) /i );
-                       last if m/\);/;
+                       $opctype = $1 if ( /for type (\w+) /i );
+                       $opcidx = $1 if ( /using (\w+) /i );
+                       last if /\);/;
                }
                $opctype =~ tr/A-Z/a-z/;
                $opcidx =~ tr/A-Z/a-z/;