OSDN Git Service

Switch CI from Travis CI to GitHub Actions (#12)
[pgbigm/pg_bigm.git] / pg_bigm--1.2.sql
1 -- complain if script is sourced in psql, rather than via CREATE EXTENSION
2 \echo Use "CREATE EXTENSION pg_bigm" to load this file. \quit
3
4 CREATE FUNCTION show_bigm(text)
5 RETURNS _text
6 AS 'MODULE_PATHNAME'
7 LANGUAGE C STRICT IMMUTABLE;
8
9 CREATE FUNCTION bigm_similarity(text, text)
10 RETURNS float4
11 AS 'MODULE_PATHNAME'
12 LANGUAGE C STRICT IMMUTABLE;
13
14 CREATE FUNCTION bigm_similarity_op(text,text)
15 RETURNS bool
16 AS 'MODULE_PATHNAME'
17 LANGUAGE C STRICT STABLE;  -- stable because depends on pg_bigm.similarity_limit
18
19 CREATE OPERATOR =% (
20         LEFTARG = text,
21         RIGHTARG = text,
22         PROCEDURE = bigm_similarity_op,
23         COMMUTATOR = '=%',
24         RESTRICT = contsel,
25         JOIN = contjoinsel
26 );
27
28 -- support functions for gin
29 CREATE FUNCTION gin_extract_value_bigm(text, internal)
30 RETURNS internal
31 AS 'MODULE_PATHNAME'
32 LANGUAGE C IMMUTABLE STRICT;
33
34 CREATE FUNCTION gin_extract_query_bigm(text, internal, int2, internal, internal, internal, internal)
35 RETURNS internal
36 AS 'MODULE_PATHNAME'
37 LANGUAGE C IMMUTABLE STRICT;
38
39 CREATE FUNCTION gin_bigm_consistent(internal, int2, text, int4, internal, internal, internal, internal)
40 RETURNS bool
41 AS 'MODULE_PATHNAME'
42 LANGUAGE C IMMUTABLE STRICT;
43
44 CREATE FUNCTION gin_bigm_compare_partial(text, text, int2, internal)
45 RETURNS bool
46 AS 'MODULE_PATHNAME'
47 LANGUAGE C IMMUTABLE STRICT;
48
49 CREATE FUNCTION bigmtextcmp(text, text)
50 RETURNS int4
51 AS 'MODULE_PATHNAME'
52 LANGUAGE C STRICT IMMUTABLE;
53
54 -- create the operator class for gin
55 CREATE OPERATOR CLASS gin_bigm_ops
56 FOR TYPE text USING gin
57 AS
58         OPERATOR        1       pg_catalog.~~ (text, text),
59         OPERATOR        2       =% (text, text),
60         FUNCTION        1       bigmtextcmp (text, text),
61         FUNCTION        2       gin_extract_value_bigm (text, internal),
62         FUNCTION        3       gin_extract_query_bigm (text, internal, int2, internal, internal, internal, internal),
63         FUNCTION        4       gin_bigm_consistent (internal, int2, text, int4, internal, internal, internal, internal),
64         FUNCTION        5       gin_bigm_compare_partial (text, text, int2, internal),
65         STORAGE         text;
66
67 CREATE FUNCTION likequery(text)
68 RETURNS text
69 AS 'MODULE_PATHNAME'
70 LANGUAGE C STRICT IMMUTABLE;
71
72 CREATE FUNCTION pg_gin_pending_stats(index regclass, OUT pages int4, OUT tuples int8)
73 RETURNS record
74 AS 'MODULE_PATHNAME'
75 LANGUAGE C STRICT IMMUTABLE;
76
77 /* triConsistent function is available only in 9.4 or later */
78 DO $$
79 DECLARE
80     pgversion INTEGER;
81 BEGIN
82     SELECT current_setting('server_version_num')::INTEGER INTO pgversion;
83     IF pgversion >= 90400 THEN
84         CREATE FUNCTION gin_bigm_triconsistent(internal, int2, text, int4, internal, internal, internal)
85         RETURNS "char"
86         AS 'MODULE_PATHNAME'
87         LANGUAGE C IMMUTABLE STRICT;
88         ALTER OPERATOR FAMILY gin_bigm_ops USING gin ADD
89             FUNCTION        6    (text, text) gin_bigm_triconsistent (internal, int2, text, int4, internal, internal, internal);
90     END IF;
91 END;
92 $$;
93
94 /* Label whether the function is deemed safe for parallelism */
95 DO $$
96 DECLARE
97     pgversion INTEGER;
98 BEGIN
99     SELECT current_setting('server_version_num')::INTEGER INTO pgversion;
100     IF pgversion >= 90600 THEN
101         EXECUTE 'ALTER FUNCTION show_bigm(text) PARALLEL SAFE';
102         EXECUTE 'ALTER FUNCTION bigm_similarity(text, text) PARALLEL SAFE';
103         EXECUTE 'ALTER FUNCTION bigm_similarity_op(text, text) PARALLEL SAFE';
104         EXECUTE 'ALTER FUNCTION gin_extract_value_bigm(text, internal) PARALLEL SAFE';
105         EXECUTE 'ALTER FUNCTION gin_extract_query_bigm(text, internal, int2, internal, internal, internal, internal) PARALLEL SAFE';
106         EXECUTE 'ALTER FUNCTION gin_bigm_consistent(internal, int2, text, int4, internal, internal, internal, internal) PARALLEL SAFE';
107         EXECUTE 'ALTER FUNCTION gin_bigm_compare_partial(text, text, int2, internal) PARALLEL SAFE';
108         EXECUTE 'ALTER FUNCTION bigmtextcmp(text, text) PARALLEL SAFE';
109         EXECUTE 'ALTER FUNCTION likequery(text) PARALLEL SAFE';
110         EXECUTE 'ALTER FUNCTION pg_gin_pending_stats(index regclass) PARALLEL SAFE';
111         EXECUTE 'ALTER FUNCTION gin_bigm_triconsistent(internal, int2, text, int4, internal, internal, internal) PARALLEL SAFE';
112     END IF;
113 END;
114 $$;