Search code examples
postgresqlpostgis

How to uninstall PostGIS legacy (pre extensions)


This may seem like a dump question. But, I have this legacy database which was running PostGIS (but isn't anymore) and still has lots of PostGIS specific code in the dump. Stuff like this:

CREATE TYPE box2d (
    INTERNALLENGTH = 65,
    INPUT = box2d_in,
    OUTPUT = box2d_out,
    ALIGNMENT = int4,
    STORAGE = plain
);

and

CREATE FUNCTION _st_concavehull(param_inputgeom geometry) RETURNS geometry
    LANGUAGE plpgsql IMMUTABLE STRICT
    AS $$
        DECLARE
        vexhull GEOMETRY;
        var_resultgeom geometry;
        var_inputgeom geometry;
        vexring GEOMETRY;
        cavering GEOMETRY;
        cavept geometry[];
        seglength double precision;
        var_tempgeom geometry;
        scale_factor integer := 1;
        i integer;

        BEGIN

                -- First compute the ConvexHull of the geometry
                vexhull := ST_ConvexHull(param_inputgeom);
                var_inputgeom := param_inputgeom;
                ...

(You get the idea).

I'm fine with losing any GIS related data, of which I shouldn't have any. I'm also fine in dumping and reloading, though it would obviously be better to not do that.

Thanks


Solution

  • FWIW, since there doesn't seem to be an official uninstall script (that I'm aware of), this is the script I was running in the end, to remove all data types and functions created by postgis:

    DROP TYPE IF EXISTS box2d CASCADE;
    DROP TYPE IF EXISTS box2df CASCADE;
    DROP TYPE IF EXISTS box3d CASCADE;
    DROP TYPE IF EXISTS geography CASCADE;
    DROP TYPE IF EXISTS geometry CASCADE;
    DROP TYPE IF EXISTS geometry_dump CASCADE;
    DROP TYPE IF EXISTS gidx CASCADE;
    DROP TYPE IF EXISTS pgis_abs CASCADE;
    DROP TYPE IF EXISTS spheroid CASCADE;
    DROP TYPE IF EXISTS valid_detail CASCADE;
    
    DROP TABLE IF EXISTS spatial_ref_sys CASCADE;
    
    DROP FUNCTION IF EXISTS _postgis_join_selectivity(regclass, text, regclass, text, text) CASCADE;
    DROP FUNCTION IF EXISTS _postgis_stats(tbl regclass, att_name text, text) CASCADE;
    DROP FUNCTION IF EXISTS checkauth(text, text) CASCADE;
    DROP FUNCTION IF EXISTS checkauthtrigger() CASCADE;
    DROP FUNCTION IF EXISTS dropgeometrytable(table_name character varying) CASCADE;
    DROP FUNCTION IF EXISTS dropgeometrytable(schema_name character varying, table_name character varying) CASCADE;
    DROP FUNCTION IF EXISTS geography_analyze(internal) CASCADE;
    DROP FUNCTION IF EXISTS geography_gist_compress(internal) CASCADE;
    DROP FUNCTION IF EXISTS geography_gist_decompress(internal) CASCADE;
    DROP FUNCTION IF EXISTS geography_gist_penalty(internal, internal, internal) CASCADE;
    DROP FUNCTION IF EXISTS geography_gist_picksplit(internal, internal) CASCADE;
    DROP FUNCTION IF EXISTS geography_gist_union(bytea, internal) CASCADE;
    DROP FUNCTION IF EXISTS geography_typmod_in(cstring[]) CASCADE;
    DROP FUNCTION IF EXISTS geography_typmod_out(integer) CASCADE;
    DROP FUNCTION IF EXISTS geometry_analyze(internal) CASCADE;
    DROP FUNCTION IF EXISTS geometry_gist_compress_2d(internal) CASCADE;
    DROP FUNCTION IF EXISTS geometry_gist_compress_nd(internal) CASCADE;
    DROP FUNCTION IF EXISTS geometry_gist_decompress_2d(internal) CASCADE;
    DROP FUNCTION IF EXISTS geometry_gist_decompress_nd(internal) CASCADE;
    DROP FUNCTION IF EXISTS geometry_gist_penalty_2d(internal, internal, internal) CASCADE;
    DROP FUNCTION IF EXISTS geometry_gist_penalty_nd(internal, internal, internal) CASCADE;
    DROP FUNCTION IF EXISTS geometry_gist_picksplit_2d(internal, internal) CASCADE;
    DROP FUNCTION IF EXISTS geometry_gist_picksplit_nd(internal, internal) CASCADE;
    DROP FUNCTION IF EXISTS geometry_gist_union_2d(bytea, internal) CASCADE;
    DROP FUNCTION IF EXISTS geometry_gist_union_nd(bytea, internal) CASCADE;
    DROP FUNCTION IF EXISTS geometry_typmod_in(cstring[]) CASCADE;
    DROP FUNCTION IF EXISTS geometry_typmod_out(integer) CASCADE;
    DROP FUNCTION IF EXISTS gettransactionid() CASCADE;
    DROP FUNCTION IF EXISTS gserialized_gist_joinsel_2d(internal, oid, internal, smallint) CASCADE;
    DROP FUNCTION IF EXISTS gserialized_gist_joinsel_nd(internal, oid, internal, smallint) CASCADE;
    DROP FUNCTION IF EXISTS gserialized_gist_sel_2d(internal, oid, internal, integer) CASCADE;
    DROP FUNCTION IF EXISTS gserialized_gist_sel_nd(internal, oid, internal, integer) CASCADE;
    DROP FUNCTION IF EXISTS lockrow(text, text, text) CASCADE;
    DROP FUNCTION IF EXISTS lockrow(text, text, text, text) CASCADE;
    DROP FUNCTION IF EXISTS lockrow(text, text, text, timestamp without time zone) CASCADE;
    DROP FUNCTION IF EXISTS postgis_cache_bbox() CASCADE;
    DROP FUNCTION IF EXISTS postgis_constraint_dims(geomschema text, geomtable text, geomcolumn text) CASCADE;
    DROP FUNCTION IF EXISTS postgis_constraint_srid(geomschema text, geomtable text, geomcolumn text) CASCADE;
    DROP FUNCTION IF EXISTS postgis_constraint_type(geomschema text, geomtable text, geomcolumn text) CASCADE;
    DROP FUNCTION IF EXISTS postgis_geos_version() CASCADE;
    DROP FUNCTION IF EXISTS postgis_lib_build_date() CASCADE;
    DROP FUNCTION IF EXISTS postgis_lib_version() CASCADE;
    DROP FUNCTION IF EXISTS postgis_libjson_version() CASCADE;
    DROP FUNCTION IF EXISTS postgis_libxml_version() CASCADE;
    DROP FUNCTION IF EXISTS postgis_proj_version() CASCADE;
    DROP FUNCTION IF EXISTS postgis_scripts_build_date() CASCADE;
    DROP FUNCTION IF EXISTS postgis_scripts_installed() CASCADE;
    DROP FUNCTION IF EXISTS postgis_scripts_released() CASCADE;
    DROP FUNCTION IF EXISTS postgis_svn_version() CASCADE;
    DROP FUNCTION IF EXISTS postgis_type_name(geomname character varying, coord_dimension integer, use_new_name boolean) CASCADE;
    DROP FUNCTION IF EXISTS postgis_typmod_dims(integer) CASCADE;
    DROP FUNCTION IF EXISTS postgis_typmod_srid(integer) CASCADE;
    DROP FUNCTION IF EXISTS postgis_typmod_type(integer) CASCADE;
    DROP FUNCTION IF EXISTS postgis_version() CASCADE;
    DROP FUNCTION IF EXISTS st_area(text) CASCADE;
    DROP FUNCTION IF EXISTS st_asewkt(text) CASCADE;
    DROP FUNCTION IF EXISTS st_asgeojson(text) CASCADE;
    DROP FUNCTION IF EXISTS st_asgml(text) CASCADE;
    DROP FUNCTION IF EXISTS st_askml(text) CASCADE;
    DROP FUNCTION IF EXISTS st_assvg(text) CASCADE;
    DROP FUNCTION IF EXISTS st_astext(text) CASCADE;
    DROP FUNCTION IF EXISTS st_coveredby(text, text) CASCADE;
    DROP FUNCTION IF EXISTS st_covers(text, text) CASCADE;
    DROP FUNCTION IF EXISTS st_distance(text, text) CASCADE;
    DROP FUNCTION IF EXISTS st_dwithin(text, text, double precision) CASCADE;
    DROP FUNCTION IF EXISTS st_intersects(text, text) CASCADE;
    DROP FUNCTION IF EXISTS st_length(text) CASCADE;
    DROP FUNCTION IF EXISTS st_relatematch(text, text) CASCADE;