From 3ce6406a06d5ae608e04eb7646f23c2f4339aec2 Mon Sep 17 00:00:00 2001 From: Paul Ramsey Date: Mon, 8 Jun 2009 23:21:55 +0000 Subject: [PATCH] Work on upgrade script. git-svn-id: http://svn.osgeo.org/postgis/trunk@4156 b70326c6-7e19-0410-871a-916f4a2858ee --- postgis/postgis.sql.in.c | 32 ++++++++++++++++---------------- utils/postgis_proc_upgrade.pl | 19 ++++++++++++++++++- 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/postgis/postgis.sql.in.c b/postgis/postgis.sql.in.c index 1b6dd896f..ed19ce30f 100644 --- a/postgis/postgis.sql.in.c +++ b/postgis/postgis.sql.in.c @@ -4053,12 +4053,12 @@ CREATE AGGREGATE ST_MemUnion ( -- Container type to hold the ArrayBuildState pointer as it passes through -- the geometry array accumulation aggregate. -- -CREATE FUNCTION pgis_abs_in(cstring) +CREATEFUNCTION pgis_abs_in(cstring) RETURNS pgis_abs AS 'MODULE_PATHNAME' LANGUAGE 'C' IMMUTABLE STRICT; -CREATE FUNCTION pgis_abs_out(pgis_abs) +CREATEFUNCTION pgis_abs_out(pgis_abs) RETURNS cstring AS 'MODULE_PATHNAME' LANGUAGE 'C' IMMUTABLE STRICT; @@ -4071,49 +4071,49 @@ CREATE TYPE pgis_abs ( ); -- Availability: 1.4.0 -CREATE FUNCTION pgis_geometry_accum_transfn(pgis_abs, geometry) +CREATEFUNCTION pgis_geometry_accum_transfn(pgis_abs, geometry) RETURNS pgis_abs AS 'MODULE_PATHNAME' LANGUAGE 'C'; -- Availability: 1.4.0 -CREATE FUNCTION pgis_geometry_accum_finalfn(pgis_abs) +CREATEFUNCTION pgis_geometry_accum_finalfn(pgis_abs) RETURNS geometry[] AS 'MODULE_PATHNAME' LANGUAGE 'C'; -- Availability: 1.4.0 -CREATE FUNCTION pgis_geometry_union_finalfn(pgis_abs) +CREATEFUNCTION pgis_geometry_union_finalfn(pgis_abs) RETURNS geometry AS 'MODULE_PATHNAME' LANGUAGE 'C'; -- Availability: 1.4.0 -CREATE FUNCTION pgis_geometry_collect_finalfn(pgis_abs) +CREATEFUNCTION pgis_geometry_collect_finalfn(pgis_abs) RETURNS geometry AS 'MODULE_PATHNAME' LANGUAGE 'C'; -- Availability: 1.4.0 -CREATE FUNCTION pgis_geometry_polygonize_finalfn(pgis_abs) +CREATEFUNCTION pgis_geometry_polygonize_finalfn(pgis_abs) RETURNS geometry AS 'MODULE_PATHNAME' LANGUAGE 'C'; -- Availability: 1.4.0 -CREATE FUNCTION pgis_geometry_makeline_finalfn(pgis_abs) +CREATEFUNCTION pgis_geometry_makeline_finalfn(pgis_abs) RETURNS geometry AS 'MODULE_PATHNAME' LANGUAGE 'C'; -- Deprecation in: 1.2.3 CREATE AGGREGATE accum ( - BASETYPE = geometry, - SFUNC = pgis_geometry_accum_transfn, - STYPE = pgis_abs, - FINALFUNC = pgis_geometry_accum_finalfn + sfunc = pgis_geometry_accum_transfn, + basetype = geometry, + stype = pgis_abs, + finalfunc = pgis_geometry_accum_finalfn ); -- Availability: 1.2.2 CREATE AGGREGATE ST_Accum ( - BASETYPE = geometry, - SFUNC = pgis_geometry_accum_transfn, - STYPE = pgis_abs, - FINALFUNC = pgis_geometry_accum_finalfn + sfunc = pgis_geometry_accum_transfn, + basetype = geometry, + stype = pgis_abs, + finalfunct = pgis_geometry_accum_finalfn ); -- TO BE REMOVED BEFORE RELEASE diff --git a/utils/postgis_proc_upgrade.pl b/utils/postgis_proc_upgrade.pl index 4df930726..1c02ad38b 100755 --- a/utils/postgis_proc_upgrade.pl +++ b/utils/postgis_proc_upgrade.pl @@ -25,6 +25,7 @@ die "Usage: perl postgis_proc_upgrade.pl []\nCreates a new if ( @ARGV < 1 || @ARGV > 2 ); my $NEWVERSION = "UNDEF"; +my %newtypes = ( "box3d_extent", 1, "pgis_abs", 1 ); print "BEGIN;\n"; @@ -51,13 +52,17 @@ while() } } +print "-- $NEWVERSION\n"; + while() { s/NEWVERSION/$NEWVERSION/g; print; } -close(INPUT); open( INPUT, $ARGV[0] ) || die "Couldn't open file: $ARGV[0]\n"; +close(INPUT); + +open( INPUT, $ARGV[0] ) || die "Couldn't open file: $ARGV[0]\n"; while() { my $checkit = 0; @@ -76,6 +81,18 @@ while() } } + if (m/^create type (\S+)/i) + { + my $newtype = $1; + print $_ if $newtypes{$newtype}; + while() + { + print $_ if $newtypes{$newtype}; + last if m/\)/; + } + } + + # This code handles aggregates by dropping and recreating them. # The DROP would fail on aggregates as they would not exist # in old postgis installations, thus we avoid this until we -- 2.40.0