diff --git a/contrib/intarray/intarray--unpackaged--1.0.sql b/contrib/intarray/intarray--unpackaged--1.0.sql
index 238ddfeea1bc3a696c667044a0ccb8ce8d73d057..5a2829c9f53b93a10d5cc14ff1baadbb417285bb 100644
--- a/contrib/intarray/intarray--unpackaged--1.0.sql
+++ b/contrib/intarray/intarray--unpackaged--1.0.sql
@@ -88,3 +88,21 @@ WHERE oid = 'ginint4_queryextract(internal,internal,smallint,internal,internal)'
 UPDATE pg_catalog.pg_proc
 SET pronargs = 8, proargtypes = '2281 21 2281 23 2281 2281 2281 2281'
 WHERE oid = 'ginint4_consistent(internal,smallint,internal,integer,internal,internal)'::pg_catalog.regprocedure;
+
+-- intarray also relies on the core function ginarrayextract, which changed
+-- signature in 9.1.  To support upgrading, pg_catalog contains entries
+-- for ginarrayextract with both 2 and 3 args, and the former is what would
+-- have been added to our opclass during initial restore of a 9.0 dump script.
+-- Avert your eyes while we hack the pg_amproc entry to make it link to the
+-- 3-arg form ...
+
+UPDATE pg_catalog.pg_amproc
+SET amproc = 'pg_catalog.ginarrayextract(anyarray,internal,internal)'::pg_catalog.regprocedure
+WHERE amprocfamily =
+  (SELECT oid FROM pg_catalog.pg_opfamily WHERE opfname = 'gin__int_ops' AND
+     opfnamespace = (SELECT oid FROM pg_catalog.pg_namespace
+                     WHERE nspname = pg_catalog.current_schema()))
+  AND amproclefttype = 'integer[]'::pg_catalog.regtype
+  AND amprocrighttype = 'integer[]'::pg_catalog.regtype
+  AND amprocnum = 2
+  AND amproc = 'pg_catalog.ginarrayextract(anyarray,internal)'::pg_catalog.regprocedure;
diff --git a/contrib/tsearch2/tsearch2--unpackaged--1.0.sql b/contrib/tsearch2/tsearch2--unpackaged--1.0.sql
index a3fcc8572ab060b75a90f679516727f5dad9a8b6..d04d5aa57e363b62f1ed8319f6a85acb93988285 100644
--- a/contrib/tsearch2/tsearch2--unpackaged--1.0.sql
+++ b/contrib/tsearch2/tsearch2--unpackaged--1.0.sql
@@ -98,3 +98,44 @@ ALTER EXTENSION tsearch2 ADD operator family @extschema@.tsvector_ops using btre
 ALTER EXTENSION tsearch2 ADD operator class @extschema@.tsvector_ops using btree;
 ALTER EXTENSION tsearch2 ADD operator family @extschema@.tsquery_ops using btree;
 ALTER EXTENSION tsearch2 ADD operator class @extschema@.tsquery_ops using btree;
+
+-- tsearch2 relies on the core functions gin_extract_tsvector,
+-- gin_extract_tsquery, and gin_tsquery_consistent, which changed signature in
+-- 9.1.  To support upgrading, pg_catalog contains entries for these functions
+-- with both the old and new signatures, and the former is what would have
+-- been added to our opclass during initial restore of a 9.0 dump script.
+-- Avert your eyes while we hack the pg_amproc entries to make them link to
+-- the new forms ...
+
+UPDATE pg_catalog.pg_amproc
+SET amproc = 'pg_catalog.gin_extract_tsvector(pg_catalog.tsvector,internal,internal)'::pg_catalog.regprocedure
+WHERE amprocfamily =
+  (SELECT oid FROM pg_catalog.pg_opfamily WHERE opfname = 'gin_tsvector_ops' AND
+     opfnamespace = (SELECT oid FROM pg_catalog.pg_namespace
+                     WHERE nspname = '@extschema@'))
+  AND amproclefttype = 'pg_catalog.tsvector'::pg_catalog.regtype
+  AND amprocrighttype = 'pg_catalog.tsvector'::pg_catalog.regtype
+  AND amprocnum = 2
+  AND amproc = 'pg_catalog.gin_extract_tsvector(pg_catalog.tsvector,internal)'::pg_catalog.regprocedure;
+
+UPDATE pg_catalog.pg_amproc
+SET amproc = 'pg_catalog.gin_extract_tsquery(pg_catalog.tsquery,internal,smallint,internal,internal,internal,internal)'::pg_catalog.regprocedure
+WHERE amprocfamily =
+  (SELECT oid FROM pg_catalog.pg_opfamily WHERE opfname = 'gin_tsvector_ops' AND
+     opfnamespace = (SELECT oid FROM pg_catalog.pg_namespace
+                     WHERE nspname = '@extschema@'))
+  AND amproclefttype = 'pg_catalog.tsvector'::pg_catalog.regtype
+  AND amprocrighttype = 'pg_catalog.tsvector'::pg_catalog.regtype
+  AND amprocnum = 3
+  AND amproc = 'pg_catalog.gin_extract_tsquery(pg_catalog.tsquery,internal,smallint,internal,internal)'::pg_catalog.regprocedure;
+
+UPDATE pg_catalog.pg_amproc
+SET amproc = 'pg_catalog.gin_tsquery_consistent(internal,smallint,pg_catalog.tsquery,integer,internal,internal,internal,internal)'::pg_catalog.regprocedure
+WHERE amprocfamily =
+  (SELECT oid FROM pg_catalog.pg_opfamily WHERE opfname = 'gin_tsvector_ops' AND
+     opfnamespace = (SELECT oid FROM pg_catalog.pg_namespace
+                     WHERE nspname = '@extschema@'))
+  AND amproclefttype = 'pg_catalog.tsvector'::pg_catalog.regtype
+  AND amprocrighttype = 'pg_catalog.tsvector'::pg_catalog.regtype
+  AND amprocnum = 4
+  AND amproc = 'pg_catalog.gin_tsquery_consistent(internal,smallint,pg_catalog.tsquery,integer,internal,internal)'::pg_catalog.regprocedure;