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 -> ( 27 LEFTARG = cube, RIGHTARG = int, PROCEDURE = cube_coord 28); 29 30CREATE OPERATOR ~> ( 31 LEFTARG = cube, RIGHTARG = int, PROCEDURE = cube_coord_llur 32); 33 34CREATE OPERATOR <#> ( 35 LEFTARG = cube, RIGHTARG = cube, PROCEDURE = distance_taxicab, 36 COMMUTATOR = '<#>' 37); 38 39CREATE OPERATOR <-> ( 40 LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_distance, 41 COMMUTATOR = '<->' 42); 43 44CREATE OPERATOR <=> ( 45 LEFTARG = cube, RIGHTARG = cube, PROCEDURE = distance_chebyshev, 46 COMMUTATOR = '<=>' 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 55 OPERATOR 15 ~> (cube, int) FOR ORDER BY float_ops, 56 OPERATOR 16 <#> (cube, cube) FOR ORDER BY float_ops, 57 OPERATOR 17 <-> (cube, cube) FOR ORDER BY float_ops, 58 OPERATOR 18 <=> (cube, cube) FOR ORDER BY float_ops, 59 FUNCTION 8 (cube, cube) g_cube_distance (internal, cube, smallint, oid); 60