Fix incorrect pg_stat_io output on 32-bit machines.
[pgsql.git] / contrib / cube / cube--1.2.sql
blobdea2614888d368e8e40b47ac308e539b29a2a042
1 /* contrib/cube/cube--1.2.sql */
3 -- complain if script is sourced in psql, rather than via CREATE EXTENSION
4 \echo Use "CREATE EXTENSION cube" to load this file. \quit
6 -- Create the user-defined type for N-dimensional boxes
8 CREATE FUNCTION cube_in(cstring)
9 RETURNS cube
10 AS 'MODULE_PATHNAME'
11 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
13 CREATE FUNCTION cube(float8[], float8[]) RETURNS cube
14 AS 'MODULE_PATHNAME', 'cube_a_f8_f8'
15 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
17 CREATE FUNCTION cube(float8[]) RETURNS cube
18 AS 'MODULE_PATHNAME', 'cube_a_f8'
19 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
21 CREATE FUNCTION cube_out(cube)
22 RETURNS cstring
23 AS 'MODULE_PATHNAME'
24 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
26 CREATE TYPE cube (
27         INTERNALLENGTH = variable,
28         INPUT = cube_in,
29         OUTPUT = cube_out,
30         ALIGNMENT = double
33 COMMENT ON TYPE cube IS 'multi-dimensional cube ''(FLOAT-1, FLOAT-2, ..., FLOAT-N), (FLOAT-1, FLOAT-2, ..., FLOAT-N)''';
36 -- External C-functions for R-tree methods
39 -- Comparison methods
41 CREATE FUNCTION cube_eq(cube, cube)
42 RETURNS bool
43 AS 'MODULE_PATHNAME'
44 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
46 COMMENT ON FUNCTION cube_eq(cube, cube) IS 'same as';
48 CREATE FUNCTION cube_ne(cube, cube)
49 RETURNS bool
50 AS 'MODULE_PATHNAME'
51 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
53 COMMENT ON FUNCTION cube_ne(cube, cube) IS 'different';
55 CREATE FUNCTION cube_lt(cube, cube)
56 RETURNS bool
57 AS 'MODULE_PATHNAME'
58 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
60 COMMENT ON FUNCTION cube_lt(cube, cube) IS 'lower than';
62 CREATE FUNCTION cube_gt(cube, cube)
63 RETURNS bool
64 AS 'MODULE_PATHNAME'
65 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
67 COMMENT ON FUNCTION cube_gt(cube, cube) IS 'greater than';
69 CREATE FUNCTION cube_le(cube, cube)
70 RETURNS bool
71 AS 'MODULE_PATHNAME'
72 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
74 COMMENT ON FUNCTION cube_le(cube, cube) IS 'lower than or equal to';
76 CREATE FUNCTION cube_ge(cube, cube)
77 RETURNS bool
78 AS 'MODULE_PATHNAME'
79 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
81 COMMENT ON FUNCTION cube_ge(cube, cube) IS 'greater than or equal to';
83 CREATE FUNCTION cube_cmp(cube, cube)
84 RETURNS int4
85 AS 'MODULE_PATHNAME'
86 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
88 COMMENT ON FUNCTION cube_cmp(cube, cube) IS 'btree comparison function';
90 CREATE FUNCTION cube_contains(cube, cube)
91 RETURNS bool
92 AS 'MODULE_PATHNAME'
93 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
95 COMMENT ON FUNCTION cube_contains(cube, cube) IS 'contains';
97 CREATE FUNCTION cube_contained(cube, cube)
98 RETURNS bool
99 AS 'MODULE_PATHNAME'
100 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
102 COMMENT ON FUNCTION cube_contained(cube, cube) IS 'contained in';
104 CREATE FUNCTION cube_overlap(cube, cube)
105 RETURNS bool
106 AS 'MODULE_PATHNAME'
107 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
109 COMMENT ON FUNCTION cube_overlap(cube, cube) IS 'overlaps';
111 -- support routines for indexing
113 CREATE FUNCTION cube_union(cube, cube)
114 RETURNS cube
115 AS 'MODULE_PATHNAME'
116 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
118 CREATE FUNCTION cube_inter(cube, cube)
119 RETURNS cube
120 AS 'MODULE_PATHNAME'
121 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
123 CREATE FUNCTION cube_size(cube)
124 RETURNS float8
125 AS 'MODULE_PATHNAME'
126 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
129 -- Misc N-dimensional functions
131 CREATE FUNCTION cube_subset(cube, int4[])
132 RETURNS cube
133 AS 'MODULE_PATHNAME'
134 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
136 -- proximity routines
138 CREATE FUNCTION cube_distance(cube, cube)
139 RETURNS float8
140 AS 'MODULE_PATHNAME'
141 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
143 CREATE FUNCTION distance_chebyshev(cube, cube)
144 RETURNS float8
145 AS 'MODULE_PATHNAME'
146 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
148 CREATE FUNCTION distance_taxicab(cube, cube)
149 RETURNS float8
150 AS 'MODULE_PATHNAME'
151 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
153 -- Extracting elements functions
155 CREATE FUNCTION cube_dim(cube)
156 RETURNS int4
157 AS 'MODULE_PATHNAME'
158 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
160 CREATE FUNCTION cube_ll_coord(cube, int4)
161 RETURNS float8
162 AS 'MODULE_PATHNAME'
163 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
165 CREATE FUNCTION cube_ur_coord(cube, int4)
166 RETURNS float8
167 AS 'MODULE_PATHNAME'
168 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
170 CREATE FUNCTION cube_coord(cube, int4)
171 RETURNS float8
172 AS 'MODULE_PATHNAME'
173 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
175 CREATE FUNCTION cube_coord_llur(cube, int4)
176 RETURNS float8
177 AS 'MODULE_PATHNAME'
178 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
180 CREATE FUNCTION cube(float8) RETURNS cube
181 AS 'MODULE_PATHNAME', 'cube_f8'
182 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
184 CREATE FUNCTION cube(float8, float8) RETURNS cube
185 AS 'MODULE_PATHNAME', 'cube_f8_f8'
186 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
188 CREATE FUNCTION cube(cube, float8) RETURNS cube
189 AS 'MODULE_PATHNAME', 'cube_c_f8'
190 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
192 CREATE FUNCTION cube(cube, float8, float8) RETURNS cube
193 AS 'MODULE_PATHNAME', 'cube_c_f8_f8'
194 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
196 -- Test if cube is also a point
198 CREATE FUNCTION cube_is_point(cube)
199 RETURNS bool
200 AS 'MODULE_PATHNAME'
201 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
203 -- Increasing the size of a cube by a radius in at least n dimensions
205 CREATE FUNCTION cube_enlarge(cube, float8, int4)
206 RETURNS cube
207 AS 'MODULE_PATHNAME'
208 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
211 -- OPERATORS
214 CREATE OPERATOR < (
215         LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_lt,
216         COMMUTATOR = '>', NEGATOR = '>=',
217         RESTRICT = scalarltsel, JOIN = scalarltjoinsel
220 CREATE OPERATOR > (
221         LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_gt,
222         COMMUTATOR = '<', NEGATOR = '<=',
223         RESTRICT = scalargtsel, JOIN = scalargtjoinsel
226 CREATE OPERATOR <= (
227         LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_le,
228         COMMUTATOR = '>=', NEGATOR = '>',
229         RESTRICT = scalarltsel, JOIN = scalarltjoinsel
232 CREATE OPERATOR >= (
233         LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_ge,
234         COMMUTATOR = '<=', NEGATOR = '<',
235         RESTRICT = scalargtsel, JOIN = scalargtjoinsel
238 CREATE OPERATOR && (
239         LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_overlap,
240         COMMUTATOR = '&&',
241         RESTRICT = areasel, JOIN = areajoinsel
244 CREATE OPERATOR = (
245         LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_eq,
246         COMMUTATOR = '=', NEGATOR = '<>',
247         RESTRICT = eqsel, JOIN = eqjoinsel,
248         MERGES
251 CREATE OPERATOR <> (
252         LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_ne,
253         COMMUTATOR = '<>', NEGATOR = '=',
254         RESTRICT = neqsel, JOIN = neqjoinsel
257 CREATE OPERATOR @> (
258         LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_contains,
259         COMMUTATOR = '<@',
260         RESTRICT = contsel, JOIN = contjoinsel
263 CREATE OPERATOR <@ (
264         LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_contained,
265         COMMUTATOR = '@>',
266         RESTRICT = contsel, JOIN = contjoinsel
269 CREATE OPERATOR -> (
270         LEFTARG = cube, RIGHTARG = int, PROCEDURE = cube_coord
273 CREATE OPERATOR ~> (
274         LEFTARG = cube, RIGHTARG = int, PROCEDURE = cube_coord_llur
277 CREATE OPERATOR <#> (
278         LEFTARG = cube, RIGHTARG = cube, PROCEDURE = distance_taxicab,
279         COMMUTATOR = '<#>'
282 CREATE OPERATOR <-> (
283         LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_distance,
284         COMMUTATOR = '<->'
287 CREATE OPERATOR <=> (
288         LEFTARG = cube, RIGHTARG = cube, PROCEDURE = distance_chebyshev,
289         COMMUTATOR = '<=>'
292 -- these are obsolete/deprecated:
293 CREATE OPERATOR @ (
294         LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_contains,
295         COMMUTATOR = '~',
296         RESTRICT = contsel, JOIN = contjoinsel
299 CREATE OPERATOR ~ (
300         LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_contained,
301         COMMUTATOR = '@',
302         RESTRICT = contsel, JOIN = contjoinsel
306 -- define the GiST support methods
307 CREATE FUNCTION g_cube_consistent(internal,cube,smallint,oid,internal)
308 RETURNS bool
309 AS 'MODULE_PATHNAME'
310 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
312 CREATE FUNCTION g_cube_compress(internal)
313 RETURNS internal
314 AS 'MODULE_PATHNAME'
315 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
317 CREATE FUNCTION g_cube_decompress(internal)
318 RETURNS internal
319 AS 'MODULE_PATHNAME'
320 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
322 CREATE FUNCTION g_cube_penalty(internal,internal,internal)
323 RETURNS internal
324 AS 'MODULE_PATHNAME'
325 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
327 CREATE FUNCTION g_cube_picksplit(internal, internal)
328 RETURNS internal
329 AS 'MODULE_PATHNAME'
330 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
332 CREATE FUNCTION g_cube_union(internal, internal)
333 RETURNS cube
334 AS 'MODULE_PATHNAME'
335 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
337 CREATE FUNCTION g_cube_same(cube, cube, internal)
338 RETURNS internal
339 AS 'MODULE_PATHNAME'
340 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
342 CREATE FUNCTION g_cube_distance (internal, cube, smallint, oid, internal)
343 RETURNS float8
344 AS 'MODULE_PATHNAME'
345 LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
347 -- Create the operator classes for indexing
349 CREATE OPERATOR CLASS cube_ops
350     DEFAULT FOR TYPE cube USING btree AS
351         OPERATOR        1       < ,
352         OPERATOR        2       <= ,
353         OPERATOR        3       = ,
354         OPERATOR        4       >= ,
355         OPERATOR        5       > ,
356         FUNCTION        1       cube_cmp(cube, cube);
358 CREATE OPERATOR CLASS gist_cube_ops
359     DEFAULT FOR TYPE cube USING gist AS
360         OPERATOR        3       && ,
361         OPERATOR        6       = ,
362         OPERATOR        7       @> ,
363         OPERATOR        8       <@ ,
364         OPERATOR        13      @ ,
365         OPERATOR        14      ~ ,
366         OPERATOR        15      ~> (cube, int) FOR ORDER BY float_ops,
367         OPERATOR        16      <#> (cube, cube) FOR ORDER BY float_ops,
368         OPERATOR        17      <-> (cube, cube) FOR ORDER BY float_ops,
369         OPERATOR        18      <=> (cube, cube) FOR ORDER BY float_ops,
371         FUNCTION        1       g_cube_consistent (internal, cube, smallint, oid, internal),
372         FUNCTION        2       g_cube_union (internal, internal),
373         FUNCTION        3       g_cube_compress (internal),
374         FUNCTION        4       g_cube_decompress (internal),
375         FUNCTION        5       g_cube_penalty (internal, internal, internal),
376         FUNCTION        6       g_cube_picksplit (internal, internal),
377         FUNCTION        7       g_cube_same (cube, cube, internal),
378         FUNCTION        8       g_cube_distance (internal, cube, smallint, oid, internal);