]> granicus.if.org Git - postgresql/blob - contrib/pg_trgm/pg_trgm--unpackaged--1.0.sql
0e1c63f0752d7e7794e3775e5cca635d4b42b29e
[postgresql] / contrib / pg_trgm / pg_trgm--unpackaged--1.0.sql
1 /* contrib/pg_trgm/pg_trgm--unpackaged--1.0.sql */
2
3 ALTER EXTENSION pg_trgm ADD function set_limit(real);
4 ALTER EXTENSION pg_trgm ADD function show_limit();
5 ALTER EXTENSION pg_trgm ADD function show_trgm(text);
6 ALTER EXTENSION pg_trgm ADD function similarity(text,text);
7 ALTER EXTENSION pg_trgm ADD function similarity_op(text,text);
8 ALTER EXTENSION pg_trgm ADD operator %(text,text);
9 ALTER EXTENSION pg_trgm ADD type gtrgm;
10 ALTER EXTENSION pg_trgm ADD function gtrgm_in(cstring);
11 ALTER EXTENSION pg_trgm ADD function gtrgm_out(gtrgm);
12 ALTER EXTENSION pg_trgm ADD function gtrgm_consistent(internal,text,integer,oid,internal);
13 ALTER EXTENSION pg_trgm ADD function gtrgm_compress(internal);
14 ALTER EXTENSION pg_trgm ADD function gtrgm_decompress(internal);
15 ALTER EXTENSION pg_trgm ADD function gtrgm_penalty(internal,internal,internal);
16 ALTER EXTENSION pg_trgm ADD function gtrgm_picksplit(internal,internal);
17 ALTER EXTENSION pg_trgm ADD function gtrgm_union(bytea,internal);
18 ALTER EXTENSION pg_trgm ADD function gtrgm_same(gtrgm,gtrgm,internal);
19 ALTER EXTENSION pg_trgm ADD operator family gist_trgm_ops using gist;
20 ALTER EXTENSION pg_trgm ADD operator class gist_trgm_ops using gist;
21 ALTER EXTENSION pg_trgm ADD operator family gin_trgm_ops using gin;
22 ALTER EXTENSION pg_trgm ADD operator class gin_trgm_ops using gin;
23
24 -- These functions had different names/signatures in 9.0.  We can't just
25 -- drop and recreate them because they are linked into the GIN opclass,
26 -- so we need some ugly hacks.
27
28 -- First, absorb them into the extension under their old names.
29
30 ALTER EXTENSION pg_trgm ADD function gin_extract_trgm(text, internal);
31 ALTER EXTENSION pg_trgm ADD function gin_extract_trgm(text, internal, int2, internal, internal);
32 ALTER EXTENSION pg_trgm ADD function gin_trgm_consistent(internal,smallint,text,integer,internal,internal);
33
34 -- Fix the names, and then do CREATE OR REPLACE to adjust the function
35 -- bodies to be correct (ie, reference the correct C symbol).
36
37 ALTER FUNCTION gin_extract_trgm(text, internal)
38   RENAME TO gin_extract_value_trgm;
39 CREATE OR REPLACE FUNCTION gin_extract_value_trgm(text, internal)
40 RETURNS internal
41 AS 'MODULE_PATHNAME'
42 LANGUAGE C IMMUTABLE STRICT;
43
44 ALTER FUNCTION gin_extract_trgm(text, internal, int2, internal, internal)
45   RENAME TO gin_extract_query_trgm;
46 CREATE OR REPLACE FUNCTION gin_extract_query_trgm(text, internal, int2, internal, internal)
47 RETURNS internal
48 AS 'MODULE_PATHNAME'
49 LANGUAGE C IMMUTABLE STRICT;
50
51 -- gin_trgm_consistent didn't change name.
52
53 -- Last, fix the parameter lists by means of direct UPDATE on the pg_proc
54 -- entries.  This is ugly as can be, but there's no other way to do it
55 -- while preserving the identities (OIDs) of the functions.
56
57 UPDATE pg_catalog.pg_proc
58 SET pronargs = 7, proargtypes = '25 2281 21 2281 2281 2281 2281'
59 WHERE oid = 'gin_extract_query_trgm(text,internal,int2,internal,internal)'::pg_catalog.regprocedure;
60
61 UPDATE pg_catalog.pg_proc
62 SET pronargs = 8, proargtypes = '2281 21 25 23 2281 2281 2281 2281'
63 WHERE oid = 'gin_trgm_consistent(internal,smallint,text,integer,internal,internal)'::pg_catalog.regprocedure;
64
65
66 -- These were not in 9.0:
67
68 CREATE FUNCTION similarity_dist(text,text)
69 RETURNS float4
70 AS 'MODULE_PATHNAME'
71 LANGUAGE C STRICT IMMUTABLE;
72
73 CREATE OPERATOR <-> (
74         LEFTARG = text,
75         RIGHTARG = text,
76         PROCEDURE = similarity_dist,
77         COMMUTATOR = '<->'
78 );
79
80 CREATE FUNCTION gtrgm_distance(internal,text,int,oid)
81 RETURNS float8
82 AS 'MODULE_PATHNAME'
83 LANGUAGE C IMMUTABLE STRICT;
84
85 -- Add new stuff to the operator classes.  See comment in pg_trgm--1.0.sql.
86
87 ALTER OPERATOR FAMILY gist_trgm_ops USING gist ADD
88         OPERATOR        2       <-> (text, text) FOR ORDER BY pg_catalog.float_ops,
89         OPERATOR        3       pg_catalog.~~ (text, text),
90         OPERATOR        4       pg_catalog.~~* (text, text),
91         FUNCTION        8 (text, text)  gtrgm_distance (internal, text, int, oid);
92
93 ALTER OPERATOR FAMILY gin_trgm_ops USING gin ADD
94         OPERATOR        3       pg_catalog.~~ (text, text),
95         OPERATOR        4       pg_catalog.~~* (text, text);