1
- /* contrib/cube/cube--1.0 .sql*/
1
+ /* contrib/cube/cube--1.1 .sql*/
2
2
3
3
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
4
4
\echo Use" CREATE EXTENSION cube" to load this file. \quit
@@ -140,6 +140,16 @@ RETURNS float8
140
140
AS ' MODULE_PATHNAME'
141
141
LANGUAGE C IMMUTABLE STRICT;
142
142
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
+
143
153
-- Extracting elements functions
144
154
145
155
CREATE FUNCTION cube_dim (cube)
@@ -157,6 +167,16 @@ RETURNS float8
157
167
AS ' MODULE_PATHNAME'
158
168
LANGUAGE C IMMUTABLE STRICT;
159
169
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
+
160
180
CREATE FUNCTION cube (float8) RETURNS cube
161
181
AS ' MODULE_PATHNAME' ,' cube_f8'
162
182
LANGUAGE C IMMUTABLE STRICT;
@@ -246,6 +266,29 @@ CREATE OPERATOR <@ (
246
266
RESTRICT= contsel,JOIN = contjoinsel
247
267
);
248
268
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
+
249
292
-- these are obsolete/deprecated:
250
293
CREATE OPERATOR @ (
251
294
LEFTARG= cube, RIGHTARG= cube, PROCEDURE= cube_contains,
@@ -296,6 +339,10 @@ RETURNS internal
296
339
AS ' MODULE_PATHNAME'
297
340
LANGUAGE C IMMUTABLE STRICT;
298
341
342
+ CREATE FUNCTION g_cube_distance (internal, cube,smallint ,oid )
343
+ RETURNS internal
344
+ AS ' MODULE_PATHNAME'
345
+ LANGUAGE C IMMUTABLE STRICT;
299
346
300
347
-- Create the operator classes for indexing
301
348
@@ -316,10 +363,17 @@ CREATE OPERATOR CLASS gist_cube_ops
316
363
OPERATOR8 < @ ,
317
364
OPERATOR13 @ ,
318
365
OPERATOR14 ~ ,
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
+
319
371
FUNCTION1 g_cube_consistent (internal, cube,int ,oid , internal),
320
372
FUNCTION2 g_cube_union (internal, internal),
321
373
FUNCTION3 g_cube_compress (internal),
322
374
FUNCTION4 g_cube_decompress (internal),
323
375
FUNCTION5 g_cube_penalty (internal, internal, internal),
324
376
FUNCTION6 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
+