Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#2489 closed defect (fixed)

st_asgml functions not dropped 2.0 to 2.1 upgrade

Reported by: kyngchaos Owned by: robe
Priority: medium Milestone: PostGIS 2.1.1
Component: build/upgrade/install Version: 2.1.x
Keywords: history Cc: erictheise

Description

While upgrading Postgres I found a couple functions not dropped (or updated?) in the PostGIS 2.0-2.1 upgrade sql (extension):

_st_asgml (integer, geometry, integer, integer, text) _st_asgml (integer, geography, integer, integer, text)

Change History (12)

comment:1 Changed 6 years ago by robe

Milestone: PostGIS 2.1.1

comment:2 Changed 6 years ago by erictheise

Cc: erictheise added

I'm also affected by this defect. In trying to upgrade from postgresql 9.2 to 9.3, I updated postgis from 2.0.3 to 2.1.0, but the migration is not smooth. In my pg_upgrade_dump_N.custom file, I'm seeing (sorry for the binary artifacts):

ALTER EXTENSION "postgis" ADD FUNCTION "_st_asgeojson"(integer, "geometry", integer, integer); @O@@@DROP FUNCTION "public"."_st_asgeojson"(integer, "geometry", integer, integer); AA@@@@F@@@publicAA@@@@H@@@postgres@E@@@false@C@@@191@A@@@5@D@@@1890AA@@@C@@@@@@@@@"A@@@@@@@@D@@@1255@F@@@144795@9@@@_st_asgml(integer, "geography", integer, integer, "text")@H@@@FUNCTION@B@@@@@@CREATE FUNCTION "_st_asgml"(integer, "geography", integer, integer, "text") RETURNS "text"

LANGUAGE "c" IMMUTABLE AS '$libdir/postgis-2.0', 'geography_as_gml';

@T@@@DROP FUNCTION "public"."_st_asgml"(integer, "geography", integer, integer, "text"); AA@@@@F@@@publicAA@@@@H@@@postgres@E@@@false@A@@@5@D@@@1924AA@@@C@@@@@@@@@ A@@@@@@@@D@@@1255@F@@@144614@8@@@_st_asgml(integer, "geometry", integer, integer, "text")@H@@@FUNCTION@B@@@@@@CREATE FUNCTION "_st_asgml"(integer, "geometry", integer, integer, "text") RETURNS "text"

LANGUAGE "c" IMMUTABLE AS '$libdir/postgis-2.0', 'LWGEOM_asGML';

@S@@@DROP FUNCTION "public"."_st_asgml"(integer, "geometry", integer, integer, "text"); AA@@@@F@@@publicAA@@@@H@@@postgres@E@@@false@D@@@1890@A@@@5AA@@@C@@@@@@@@C@@@@@@@@D@@@1255@F@@@830579@A@@@_st_asgml(integer, "geography", integer, integer, "text", "text")@H@@@FUNCTION@B@@@@]A@@CREATE FUNCTION "_st_asgml"(integer, "geography", integer, integer, "text", "text") RETURNS "text"

LANGUAGE "c" IMMUTABLE AS '$libdir/postgis-2.1', 'geography_as_gml';

when everything else refers to postgis-2.1. As a consequence, my loadable_libraries.txt file includes this error:

Could not load library "$libdir/postgis-2.0" ERROR: could not access file "$libdir/postgis-2.0": No such file or directory

comment:3 Changed 6 years ago by robe

Component: postgisbuild/upgrade/install
Owner: changed from pramsey to robe

These look to be functions dropped in 2.1 and replaced with overloaded versions that have text,text. I'm guessing these might be missing from our drop after script. Have to investigate a bit more

comment:4 Changed 6 years ago by robe

there are a bunch of raster ones I see as well.

I think this is the full list (well upgrading from 2.0.4 to 2.1 I need to check with lower than 2.0.4 suspect there are some) need to add to the drop afters. Will do once I can test.

DROP FUNCTION IF EXISTS st_asgml(integer, postgis.geometry, integer, integer, text);
DROP FUNCTION IF EXISTS st_asgml(integer, postgis.geography, integer, integer, text);
DROP FUNCTION IF EXISTS _st_asgml(integer, postgis.geometry, integer, integer, text);
DROP FUNCTION IF EXISTS _st_asgml(integer, postgis.geography, integer, integer, text);

Raster ones

DROP FUNCTION IF EXISTS _st_aspect4ma(double precision[], text, text[]);
DROP FUNCTION IF EXISTS _st_hillshade4ma(double precision[], text, text[]);
DROP FUNCTION IF EXISTS _st_mapalgebra4unionfinal1(raster);
DROP FUNCTION IF EXISTS _st_mapalgebra4unionstate(raster, raster, integer);
DROP FUNCTION IF EXISTS _st_mapalgebra4unionstate(raster, raster);
DROP FUNCTION IF EXISTS _st_mapalgebra4unionstate(raster, raster, text);
DROP FUNCTION IF EXISTS _st_mapalgebra4unionstate(raster, raster, integer, text);
DROP FUNCTION IF EXISTS _st_mapalgebra4unionstate(raster, raster, text, text, text, double precision, text, text, text, double precision);
DROP FUNCTION IF EXISTS _st_slope4ma(double precision[], text, text[]);

comment:5 Changed 6 years ago by robe

I tried upgrading from 2.0.1 to 2.1.0 and only getting these stragglers left behind so I think that may be it.

comment:6 Changed 6 years ago by strk

Please try r12010 (2.1 branch). When confirmed, it'll need to be ported to trunk

comment:7 Changed 6 years ago by robe

Keywords: history added

comment:8 Changed 6 years ago by strk

r12011 is the port to trunk (2.2) -- will leave closing to Kyngchaos

comment:9 Changed 6 years ago by kyngchaos

I'm sure the dropping is fine (I've already manually fixed and upgraded all my databases to 2.1, so nothing to test with), only the 2 I mentioned referenced the C library functions and caused upgrade problems.

Will these get into the 2.1.0 to 2.1.1 update scripts as well as 2.0 to 2.1? For those that have manually dropped only the 2 C functions and are now at 2.1.

comment:10 Changed 6 years ago by strk

Resolution: fixed
Status: newclosed

Yes, you'll be able to cleanup things by loading the *upgrade_21_minor.sql files in 2.1.1.

comment:11 Changed 6 years ago by kyngchaos

And the extension update scripts?

comment:12 Changed 6 years ago by strk

extension update scripts are created from the other ones, so ALTER from 2.1.0 to 2.1.1 should do the right thing.

Note: See TracTickets for help on using tickets.