OSDN Git Service

Add pg_gin_pending_cleanup function.
[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 CREATE FUNCTION pg_gin_pending_cleanup(index regclass, delay boolean DEFAULT false)
78 RETURNS int4
79 AS 'MODULE_PATHNAME'
80 LANGUAGE C STRICT IMMUTABLE;
81
82 /* triConsistent function is available only in 9.4 or later */
83 DO $$
84 DECLARE
85     pgversion TEXT;
86 BEGIN
87     SELECT current_setting('server_version_num') INTO pgversion;
88     IF pgversion >= '90400' THEN
89         CREATE FUNCTION gin_bigm_triconsistent(internal, int2, text, int4, internal, internal, internal)
90         RETURNS "char"
91         AS 'MODULE_PATHNAME'
92         LANGUAGE C IMMUTABLE STRICT;
93         ALTER OPERATOR FAMILY gin_bigm_ops USING gin ADD
94             FUNCTION        6    (text, text) gin_bigm_triconsistent (internal, int2, text, int4, internal, internal, internal);
95     END IF;
96 END;
97 $$;