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
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;