diff options
Diffstat (limited to 'contrib/intarray/intarray--unpackaged--1.0.sql')
-rw-r--r-- | contrib/intarray/intarray--unpackaged--1.0.sql | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/contrib/intarray/intarray--unpackaged--1.0.sql b/contrib/intarray/intarray--unpackaged--1.0.sql index 63814cef980..7f1bef60b1d 100644 --- a/contrib/intarray/intarray--unpackaged--1.0.sql +++ b/contrib/intarray/intarray--unpackaged--1.0.sql @@ -84,13 +84,23 @@ ALTER EXTENSION intarray ADD function ginint4_consistent(internal,smallint,inter -- entries. This is ugly as can be, but there's no other way to do it -- while preserving the identities (OIDs) of the functions. +DO LANGUAGE plpgsql +$$ +DECLARE + my_schema_unquoted pg_catalog.text := pg_catalog.current_schema(); + my_schema pg_catalog.text := pg_catalog.quote_ident(pg_catalog.current_schema()); + old_path pg_catalog.text := pg_catalog.current_setting('search_path'); +BEGIN +-- for safety, transiently set search_path to just pg_catalog+pg_temp +PERFORM pg_catalog.set_config('search_path', 'pg_catalog, pg_temp', true); + UPDATE pg_catalog.pg_proc SET pronargs = 7, proargtypes = '2281 2281 21 2281 2281 2281 2281' -WHERE oid = 'ginint4_queryextract(internal,internal,smallint,internal,internal)'::pg_catalog.regprocedure; +WHERE oid = (my_schema || '.ginint4_queryextract(internal,internal,smallint,internal,internal)')::pg_catalog.regprocedure; 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; +WHERE oid = (my_schema || '.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 @@ -104,8 +114,12 @@ SET amproc = 'pg_catalog.ginarrayextract(anyarray,internal,internal)'::pg_catalo 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())) + WHERE nspname = my_schema_unquoted)) 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; + +PERFORM pg_catalog.set_config('search_path', old_path, true); +END +$$; |