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 <@ (
246266RESTRICT= 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 @ (
251294LEFTARG= 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
316363OPERATOR8 < @ ,
317364OPERATOR13 @ ,
318365OPERATOR14 ~ ,
366+ OPERATOR15 ~> (cube,int ) FORORDER BY float_ops,
367+ OPERATOR16 < # > (cube, cube) FOR ORDER BY float_ops,
368+ OPERATOR17 < - > (cube, cube) FORORDER BY float_ops,
369+ OPERATOR18 <=> (cube, cube) FORORDER BY float_ops,
370+
319371FUNCTION1 g_cube_consistent (internal, cube,int ,oid , internal),
320372FUNCTION2 g_cube_union (internal, internal),
321373FUNCTION3 g_cube_compress (internal),
322374FUNCTION4 g_cube_decompress (internal),
323375FUNCTION5 g_cube_penalty (internal, internal, internal),
324376FUNCTION6 g_cube_picksplit (internal, internal),
325- FUNCTION7 g_cube_same (cube, cube, internal);
377+ FUNCTION7 g_cube_same (cube, cube, internal),
378+ FUNCTION8 g_cube_distance (internal, cube,smallint ,oid );
379+