]> granicus.if.org Git - postgresql/blob - contrib/intarray/intarray--unpackaged--1.0.sql
5a2829c9f53b93a10d5cc14ff1baadbb417285bb
[postgresql] / contrib / intarray / intarray--unpackaged--1.0.sql
1 /* contrib/intarray/intarray--unpackaged--1.0.sql */
2
3 ALTER EXTENSION intarray ADD type query_int;
4 ALTER EXTENSION intarray ADD function bqarr_in(cstring);
5 ALTER EXTENSION intarray ADD function bqarr_out(query_int);
6 ALTER EXTENSION intarray ADD function querytree(query_int);
7 ALTER EXTENSION intarray ADD function boolop(integer[],query_int);
8 ALTER EXTENSION intarray ADD function rboolop(query_int,integer[]);
9 ALTER EXTENSION intarray ADD operator ~~(query_int,integer[]);
10 ALTER EXTENSION intarray ADD operator @@(integer[],query_int);
11 ALTER EXTENSION intarray ADD function _int_contains(integer[],integer[]);
12 ALTER EXTENSION intarray ADD function _int_contained(integer[],integer[]);
13 ALTER EXTENSION intarray ADD function _int_overlap(integer[],integer[]);
14 ALTER EXTENSION intarray ADD function _int_same(integer[],integer[]);
15 ALTER EXTENSION intarray ADD function _int_different(integer[],integer[]);
16 ALTER EXTENSION intarray ADD function _int_union(integer[],integer[]);
17 ALTER EXTENSION intarray ADD function _int_inter(integer[],integer[]);
18 ALTER EXTENSION intarray ADD operator &&(integer[],integer[]);
19 ALTER EXTENSION intarray ADD operator <@(integer[],integer[]);
20 ALTER EXTENSION intarray ADD operator @>(integer[],integer[]);
21 ALTER EXTENSION intarray ADD operator ~(integer[],integer[]);
22 ALTER EXTENSION intarray ADD operator @(integer[],integer[]);
23 ALTER EXTENSION intarray ADD function intset(integer);
24 ALTER EXTENSION intarray ADD function icount(integer[]);
25 ALTER EXTENSION intarray ADD operator #(NONE,integer[]);
26 ALTER EXTENSION intarray ADD function sort(integer[],text);
27 ALTER EXTENSION intarray ADD function sort(integer[]);
28 ALTER EXTENSION intarray ADD function sort_asc(integer[]);
29 ALTER EXTENSION intarray ADD function sort_desc(integer[]);
30 ALTER EXTENSION intarray ADD function uniq(integer[]);
31 ALTER EXTENSION intarray ADD function idx(integer[],integer);
32 ALTER EXTENSION intarray ADD operator #(integer[],integer);
33 ALTER EXTENSION intarray ADD function subarray(integer[],integer,integer);
34 ALTER EXTENSION intarray ADD function subarray(integer[],integer);
35 ALTER EXTENSION intarray ADD function intarray_push_elem(integer[],integer);
36 ALTER EXTENSION intarray ADD operator +(integer[],integer);
37 ALTER EXTENSION intarray ADD function intarray_push_array(integer[],integer[]);
38 ALTER EXTENSION intarray ADD operator +(integer[],integer[]);
39 ALTER EXTENSION intarray ADD function intarray_del_elem(integer[],integer);
40 ALTER EXTENSION intarray ADD operator -(integer[],integer);
41 ALTER EXTENSION intarray ADD function intset_union_elem(integer[],integer);
42 ALTER EXTENSION intarray ADD operator |(integer[],integer);
43 ALTER EXTENSION intarray ADD operator |(integer[],integer[]);
44 ALTER EXTENSION intarray ADD function intset_subtract(integer[],integer[]);
45 ALTER EXTENSION intarray ADD operator -(integer[],integer[]);
46 ALTER EXTENSION intarray ADD operator &(integer[],integer[]);
47 ALTER EXTENSION intarray ADD function g_int_consistent(internal,integer[],integer,oid,internal);
48 ALTER EXTENSION intarray ADD function g_int_compress(internal);
49 ALTER EXTENSION intarray ADD function g_int_decompress(internal);
50 ALTER EXTENSION intarray ADD function g_int_penalty(internal,internal,internal);
51 ALTER EXTENSION intarray ADD function g_int_picksplit(internal,internal);
52 ALTER EXTENSION intarray ADD function g_int_union(internal,internal);
53 ALTER EXTENSION intarray ADD function g_int_same(integer[],integer[],internal);
54 ALTER EXTENSION intarray ADD operator family gist__int_ops using gist;
55 ALTER EXTENSION intarray ADD operator class gist__int_ops using gist;
56 ALTER EXTENSION intarray ADD type intbig_gkey;
57 ALTER EXTENSION intarray ADD function _intbig_in(cstring);
58 ALTER EXTENSION intarray ADD function _intbig_out(intbig_gkey);
59 ALTER EXTENSION intarray ADD function g_intbig_consistent(internal,internal,integer,oid,internal);
60 ALTER EXTENSION intarray ADD function g_intbig_compress(internal);
61 ALTER EXTENSION intarray ADD function g_intbig_decompress(internal);
62 ALTER EXTENSION intarray ADD function g_intbig_penalty(internal,internal,internal);
63 ALTER EXTENSION intarray ADD function g_intbig_picksplit(internal,internal);
64 ALTER EXTENSION intarray ADD function g_intbig_union(internal,internal);
65 ALTER EXTENSION intarray ADD function g_intbig_same(internal,internal,internal);
66 ALTER EXTENSION intarray ADD operator family gist__intbig_ops using gist;
67 ALTER EXTENSION intarray ADD operator class gist__intbig_ops using gist;
68 ALTER EXTENSION intarray ADD operator family gin__int_ops using gin;
69 ALTER EXTENSION intarray ADD operator class gin__int_ops using gin;
70
71 -- These functions had different signatures in 9.0.  We can't just
72 -- drop and recreate them because they are linked into the GIN opclass,
73 -- so we need some ugly hacks.
74
75 -- First, absorb them into the extension under their old identities.
76
77 ALTER EXTENSION intarray ADD function ginint4_queryextract(internal,internal,smallint,internal,internal);
78 ALTER EXTENSION intarray ADD function ginint4_consistent(internal,smallint,internal,integer,internal,internal);
79
80 -- Next, fix the parameter lists by means of direct UPDATE on the pg_proc
81 -- entries.  This is ugly as can be, but there's no other way to do it
82 -- while preserving the identities (OIDs) of the functions.
83
84 UPDATE pg_catalog.pg_proc
85 SET pronargs = 7, proargtypes = '2281 2281 21 2281 2281 2281 2281'
86 WHERE oid = 'ginint4_queryextract(internal,internal,smallint,internal,internal)'::pg_catalog.regprocedure;
87
88 UPDATE pg_catalog.pg_proc
89 SET pronargs = 8, proargtypes = '2281 21 2281 23 2281 2281 2281 2281'
90 WHERE oid = 'ginint4_consistent(internal,smallint,internal,integer,internal,internal)'::pg_catalog.regprocedure;
91
92 -- intarray also relies on the core function ginarrayextract, which changed
93 -- signature in 9.1.  To support upgrading, pg_catalog contains entries
94 -- for ginarrayextract with both 2 and 3 args, and the former is what would
95 -- have been added to our opclass during initial restore of a 9.0 dump script.
96 -- Avert your eyes while we hack the pg_amproc entry to make it link to the
97 -- 3-arg form ...
98
99 UPDATE pg_catalog.pg_amproc
100 SET amproc = 'pg_catalog.ginarrayextract(anyarray,internal,internal)'::pg_catalog.regprocedure
101 WHERE amprocfamily =
102   (SELECT oid FROM pg_catalog.pg_opfamily WHERE opfname = 'gin__int_ops' AND
103      opfnamespace = (SELECT oid FROM pg_catalog.pg_namespace
104                      WHERE nspname = pg_catalog.current_schema()))
105   AND amproclefttype = 'integer[]'::pg_catalog.regtype
106   AND amprocrighttype = 'integer[]'::pg_catalog.regtype
107   AND amprocnum = 2
108   AND amproc = 'pg_catalog.ginarrayextract(anyarray,internal)'::pg_catalog.regprocedure;