1 -- Create the user-defined type for the 1-D integer arrays (_int4)
5 -- Adjust this setting to control where the operators, functions, and
6 -- opclasses get created.
7 SET search_path = public;
10 CREATE FUNCTION bqarr_in(opaque)
13 LANGUAGE 'c' with (isstrict);
15 CREATE FUNCTION bqarr_out(opaque)
18 LANGUAGE 'c' with (isstrict);
20 CREATE TYPE query_int (
27 CREATE FUNCTION querytree(query_int)
30 LANGUAGE 'c' with (isstrict);
33 CREATE FUNCTION boolop(_int4, query_int) RETURNS bool
34 AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
36 COMMENT ON FUNCTION boolop(_int4, query_int) IS 'boolean operation with array';
38 CREATE FUNCTION rboolop(query_int, _int4) RETURNS bool
39 AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
41 COMMENT ON FUNCTION rboolop(query_int, _int4) IS 'boolean operation with array';
44 LEFTARG = _int4, RIGHTARG = query_int, PROCEDURE = boolop,
45 COMMUTATOR = '~~', RESTRICT = contsel, JOIN = contjoinsel
49 LEFTARG = query_int, RIGHTARG = _int4, PROCEDURE = rboolop,
50 COMMUTATOR = '@@', RESTRICT = contsel, JOIN = contjoinsel
55 -- External C-functions for R-tree methods
60 CREATE FUNCTION _int_contains(_int4, _int4) RETURNS bool
61 AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
63 COMMENT ON FUNCTION _int_contains(_int4, _int4) IS 'contains';
65 CREATE FUNCTION _int_contained(_int4, _int4) RETURNS bool
66 AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
68 COMMENT ON FUNCTION _int_contained(_int4, _int4) IS 'contained in';
70 CREATE FUNCTION _int_overlap(_int4, _int4) RETURNS bool
71 AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
73 COMMENT ON FUNCTION _int_overlap(_int4, _int4) IS 'overlaps';
75 CREATE FUNCTION _int_same(_int4, _int4) RETURNS bool
76 AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
78 COMMENT ON FUNCTION _int_same(_int4, _int4) IS 'same as';
80 CREATE FUNCTION _int_different(_int4, _int4) RETURNS bool
81 AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
83 COMMENT ON FUNCTION _int_different(_int4, _int4) IS 'different';
85 -- support routines for indexing
87 CREATE FUNCTION _int_union(_int4, _int4) RETURNS _int4
88 AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
90 CREATE FUNCTION _int_inter(_int4, _int4) RETURNS _int4
91 AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
98 LEFTARG = _int4, RIGHTARG = _int4, PROCEDURE = _int_overlap,
100 RESTRICT = contsel, JOIN = contjoinsel
103 --CREATE OPERATOR = (
104 -- LEFTARG = _int4, RIGHTARG = _int4, PROCEDURE = _int_same,
105 -- COMMUTATOR = '=', NEGATOR = '<>',
106 -- RESTRICT = eqsel, JOIN = eqjoinsel,
107 -- SORT1 = '<', SORT2 = '<'
111 LEFTARG = _int4, RIGHTARG = _int4, PROCEDURE = _int_different,
112 COMMUTATOR = '<>', NEGATOR = '=',
113 RESTRICT = neqsel, JOIN = neqjoinsel
117 LEFTARG = _int4, RIGHTARG = _int4, PROCEDURE = _int_contains,
118 COMMUTATOR = '~', RESTRICT = contsel, JOIN = contjoinsel
122 LEFTARG = _int4, RIGHTARG = _int4, PROCEDURE = _int_contained,
123 COMMUTATOR = '@', RESTRICT = contsel, JOIN = contjoinsel
127 -- define the GiST support methods
128 CREATE FUNCTION g_int_consistent(opaque,_int4,int4) RETURNS bool
129 AS 'MODULE_PATHNAME' LANGUAGE 'c';
131 CREATE FUNCTION g_int_compress(opaque) RETURNS opaque
132 AS 'MODULE_PATHNAME' LANGUAGE 'c';
134 CREATE FUNCTION g_int_decompress(opaque) RETURNS opaque
135 AS 'MODULE_PATHNAME' LANGUAGE 'c';
137 CREATE FUNCTION g_int_penalty(opaque,opaque,opaque) RETURNS opaque
138 AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
140 CREATE FUNCTION g_int_picksplit(opaque, opaque) RETURNS opaque
141 AS 'MODULE_PATHNAME' LANGUAGE 'c';
143 CREATE FUNCTION g_int_union(bytea, opaque) RETURNS _int4
144 AS 'MODULE_PATHNAME' LANGUAGE 'c';
146 CREATE FUNCTION g_int_same(_int4, _int4, opaque) RETURNS opaque
147 AS 'MODULE_PATHNAME' LANGUAGE 'c';
150 -- Create the operator class for indexing
152 CREATE OPERATOR CLASS gist__int_ops
153 DEFAULT FOR TYPE _int4 USING gist AS
155 OPERATOR 6 = RECHECK,
158 OPERATOR 20 @@ (_int4, query_int),
159 FUNCTION 1 g_int_consistent (opaque, _int4, int4),
160 FUNCTION 2 g_int_union (bytea, opaque),
161 FUNCTION 3 g_int_compress (opaque),
162 FUNCTION 4 g_int_decompress (opaque),
163 FUNCTION 5 g_int_penalty (opaque, opaque, opaque),
164 FUNCTION 6 g_int_picksplit (opaque, opaque),
165 FUNCTION 7 g_int_same (_int4, _int4, opaque);
168 ---------------------------------------------
170 ---------------------------------------------
171 -- define the GiST support methods
172 CREATE FUNCTION g_intbig_consistent(opaque,_int4,int4) RETURNS bool
173 AS 'MODULE_PATHNAME' LANGUAGE 'c';
175 CREATE FUNCTION g_intbig_compress(opaque) RETURNS opaque
176 AS 'MODULE_PATHNAME' LANGUAGE 'c';
178 CREATE FUNCTION g_intbig_decompress(opaque) RETURNS opaque
179 AS 'MODULE_PATHNAME' LANGUAGE 'c';
181 CREATE FUNCTION g_intbig_penalty(opaque,opaque,opaque) RETURNS opaque
182 AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
184 CREATE FUNCTION g_intbig_picksplit(opaque, opaque) RETURNS opaque
185 AS 'MODULE_PATHNAME' LANGUAGE 'c';
187 CREATE FUNCTION g_intbig_union(bytea, opaque) RETURNS _int4
188 AS 'MODULE_PATHNAME' LANGUAGE 'c';
190 CREATE FUNCTION g_intbig_same(_int4, _int4, opaque) RETURNS opaque
191 AS 'MODULE_PATHNAME' LANGUAGE 'c';
193 -- register the opclass for indexing (not as default)
195 CREATE OPERATOR CLASS gist__intbig_ops
196 FOR TYPE _int4 USING gist AS
197 OPERATOR 3 && RECHECK,
198 OPERATOR 6 = RECHECK,
199 OPERATOR 7 @ RECHECK,
200 OPERATOR 8 ~ RECHECK,
201 OPERATOR 20 @@ (_int4, query_int) RECHECK,
202 FUNCTION 1 g_intbig_consistent (opaque, _int4, int4),
203 FUNCTION 2 g_intbig_union (bytea, opaque),
204 FUNCTION 3 g_intbig_compress (opaque),
205 FUNCTION 4 g_intbig_decompress (opaque),
206 FUNCTION 5 g_intbig_penalty (opaque, opaque, opaque),
207 FUNCTION 6 g_intbig_picksplit (opaque, opaque),
208 FUNCTION 7 g_intbig_same (_int4, _int4, opaque);