From: Paul Ramsey Date: Sat, 14 Nov 2009 00:40:37 +0000 (+0000) Subject: Add testing and drop deprecated functions (#202) X-Git-Tag: 1.5.0b1~249 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=869a3efc1d1331110f58a627080c5a5a0aa4eeef;p=postgis Add testing and drop deprecated functions (#202) git-svn-id: http://svn.osgeo.org/postgis/trunk@4806 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/postgis/postgis.sql.in.c b/postgis/postgis.sql.in.c index f470078f3..d4e5a0ed5 100644 --- a/postgis/postgis.sql.in.c +++ b/postgis/postgis.sql.in.c @@ -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 index 000000000..662a7b0c8 --- /dev/null +++ b/postgis/postgis_drop.sql.in.c @@ -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); + + diff --git a/utils/postgis_proc_upgrade.pl b/utils/postgis_proc_upgrade.pl index dbd9e274b..37978a44f 100755 --- a/utils/postgis_proc_upgrade.pl +++ b/utils/postgis_proc_upgrade.pl @@ -139,25 +139,35 @@ open( INPUT, $sql_file ) || die "Couldn't open file: $sql_file\n"; while() { - 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() { 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() { $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() while() { $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() while() { $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() while() { $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/;