1- /* contrib/cube/cube--1.0 .sql */
1+ /* contrib/cube/cube--1.1 .sql */
22
33-- complain if script is sourced in psql, rather than via CREATE EXTENSION
44\echo Use " CREATE EXTENSION cube" to load this file. \quit
@@ -140,6 +140,16 @@ RETURNS float8
140140AS ' MODULE_PATHNAME'
141141LANGUAGE C IMMUTABLE STRICT;
142142
143+ CREATE FUNCTION distance_chebyshev (cube, cube)
144+ RETURNS float8
145+ AS ' MODULE_PATHNAME'
146+ LANGUAGE C IMMUTABLE STRICT;
147+
148+ CREATE FUNCTION distance_taxicab (cube, cube)
149+ RETURNS float8
150+ AS ' MODULE_PATHNAME'
151+ LANGUAGE C IMMUTABLE STRICT;
152+
143153-- Extracting elements functions
144154
145155CREATE FUNCTION cube_dim (cube)
@@ -157,6 +167,16 @@ RETURNS float8
157167AS ' MODULE_PATHNAME'
158168LANGUAGE C IMMUTABLE STRICT;
159169
170+ CREATE FUNCTION cube_coord (cube, int4)
171+ RETURNS float8
172+ AS ' MODULE_PATHNAME'
173+ LANGUAGE C IMMUTABLE STRICT;
174+
175+ CREATE FUNCTION cube_coord_llur (cube, int4)
176+ RETURNS float8
177+ AS ' MODULE_PATHNAME'
178+ LANGUAGE C IMMUTABLE STRICT;
179+
160180CREATE FUNCTION cube (float8) RETURNS cube
161181AS ' MODULE_PATHNAME' , ' cube_f8'
162182LANGUAGE C IMMUTABLE STRICT;
@@ -246,6 +266,29 @@ CREATE OPERATOR <@ (
246266 RESTRICT = contsel, JOIN = contjoinsel
247267);
248268
269+ CREATE OPERATOR - > (
270+ LEFTARG = cube, RIGHTARG = int , PROCEDURE = cube_coord
271+ );
272+
273+ CREATE OPERATOR ~> (
274+ LEFTARG = cube, RIGHTARG = int , PROCEDURE = cube_coord_llur
275+ );
276+
277+ CREATE OPERATOR < # > (
278+ LEFTARG = cube, RIGHTARG = cube, PROCEDURE = distance_taxicab,
279+ COMMUTATOR = ' <#>'
280+ );
281+
282+ CREATE OPERATOR < - > (
283+ LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_distance,
284+ COMMUTATOR = ' <->'
285+ );
286+
287+ CREATE OPERATOR <=> (
288+ LEFTARG = cube, RIGHTARG = cube, PROCEDURE = distance_chebyshev,
289+ COMMUTATOR = ' <=>'
290+ );
291+
249292-- these are obsolete/deprecated:
250293CREATE OPERATOR @ (
251294 LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_contains,
@@ -296,6 +339,10 @@ RETURNS internal
296339AS ' MODULE_PATHNAME'
297340LANGUAGE C IMMUTABLE STRICT;
298341
342+ CREATE FUNCTION g_cube_distance (internal, cube, smallint , oid )
343+ RETURNS internal
344+ AS ' MODULE_PATHNAME'
345+ LANGUAGE C IMMUTABLE STRICT;
299346
300347-- Create the operator classes for indexing
301348
@@ -316,10 +363,17 @@ CREATE OPERATOR CLASS gist_cube_ops
316363 OPERATOR 8 < @ ,
317364 OPERATOR 13 @ ,
318365 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,
370+
319371 FUNCTION 1 g_cube_consistent (internal, cube, int , oid , internal),
320372 FUNCTION 2 g_cube_union (internal, internal),
321373 FUNCTION 3 g_cube_compress (internal),
322374 FUNCTION 4 g_cube_decompress (internal),
323375 FUNCTION 5 g_cube_penalty (internal, internal, internal),
324376 FUNCTION 6 g_cube_picksplit (internal, internal),
325- FUNCTION 7 g_cube_same (cube, cube, internal);
377+ FUNCTION 7 g_cube_same (cube, cube, internal),
378+ FUNCTION 8 g_cube_distance (internal, cube, smallint , oid );
379+
0 commit comments