PolarDB-for-PostgreSQL
59 строк · 1.6 Кб
1/* contrib/cube/cube--1.0--1.1.sql */
2
3-- complain if script is sourced in psql, rather than via ALTER EXTENSION
4\echo Use "ALTER EXTENSION cube UPDATE TO '1.1'" to load this file. \quit
5
6CREATE FUNCTION distance_chebyshev(cube, cube)
7RETURNS float8
8AS 'MODULE_PATHNAME'
9LANGUAGE C IMMUTABLE STRICT;
10
11CREATE FUNCTION distance_taxicab(cube, cube)
12RETURNS float8
13AS 'MODULE_PATHNAME'
14LANGUAGE C IMMUTABLE STRICT;
15
16CREATE FUNCTION cube_coord(cube, int4)
17RETURNS float8
18AS 'MODULE_PATHNAME'
19LANGUAGE C IMMUTABLE STRICT;
20
21CREATE FUNCTION cube_coord_llur(cube, int4)
22RETURNS float8
23AS 'MODULE_PATHNAME'
24LANGUAGE C IMMUTABLE STRICT;
25
26CREATE OPERATOR -> (
27LEFTARG = cube, RIGHTARG = int, PROCEDURE = cube_coord
28);
29
30CREATE OPERATOR ~> (
31LEFTARG = cube, RIGHTARG = int, PROCEDURE = cube_coord_llur
32);
33
34CREATE OPERATOR <#> (
35LEFTARG = cube, RIGHTARG = cube, PROCEDURE = distance_taxicab,
36COMMUTATOR = '<#>'
37);
38
39CREATE OPERATOR <-> (
40LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_distance,
41COMMUTATOR = '<->'
42);
43
44CREATE OPERATOR <=> (
45LEFTARG = cube, RIGHTARG = cube, PROCEDURE = distance_chebyshev,
46COMMUTATOR = '<=>'
47);
48
49CREATE FUNCTION g_cube_distance (internal, cube, smallint, oid)
50RETURNS internal
51AS 'MODULE_PATHNAME'
52LANGUAGE C IMMUTABLE STRICT;
53
54ALTER OPERATOR FAMILY gist_cube_ops USING gist ADD
55OPERATOR 15 ~> (cube, int) FOR ORDER BY float_ops,
56OPERATOR 16 <#> (cube, cube) FOR ORDER BY float_ops,
57OPERATOR 17 <-> (cube, cube) FOR ORDER BY float_ops,
58OPERATOR 18 <=> (cube, cube) FOR ORDER BY float_ops,
59FUNCTION 8 (cube, cube) g_cube_distance (internal, cube, smallint, oid);
60