1
/* contrib/seg/seg--1.0.sql */
3
-- Create the user-defined type for 1-D floating point intervals (seg)
5
CREATE FUNCTION seg_in(cstring)
8
LANGUAGE C STRICT IMMUTABLE;
10
CREATE FUNCTION seg_out(seg)
13
LANGUAGE C STRICT IMMUTABLE;
21
COMMENT ON TYPE seg IS
22
'floating point interval ''FLOAT .. FLOAT'', ''.. FLOAT'', ''FLOAT ..'' or ''FLOAT''';
25
-- External C-functions for R-tree methods
30
CREATE FUNCTION seg_over_left(seg, seg)
33
LANGUAGE C STRICT IMMUTABLE;
35
COMMENT ON FUNCTION seg_over_left(seg, seg) IS
36
'overlaps or is left of';
38
CREATE FUNCTION seg_over_right(seg, seg)
41
LANGUAGE C STRICT IMMUTABLE;
43
COMMENT ON FUNCTION seg_over_right(seg, seg) IS
44
'overlaps or is right of';
46
CREATE FUNCTION seg_left(seg, seg)
49
LANGUAGE C STRICT IMMUTABLE;
51
COMMENT ON FUNCTION seg_left(seg, seg) IS
54
CREATE FUNCTION seg_right(seg, seg)
57
LANGUAGE C STRICT IMMUTABLE;
59
COMMENT ON FUNCTION seg_right(seg, seg) IS
63
-- Scalar comparison methods
65
CREATE FUNCTION seg_lt(seg, seg)
68
LANGUAGE C STRICT IMMUTABLE;
70
COMMENT ON FUNCTION seg_lt(seg, seg) IS
73
CREATE FUNCTION seg_le(seg, seg)
76
LANGUAGE C STRICT IMMUTABLE;
78
COMMENT ON FUNCTION seg_le(seg, seg) IS
81
CREATE FUNCTION seg_gt(seg, seg)
84
LANGUAGE C STRICT IMMUTABLE;
86
COMMENT ON FUNCTION seg_gt(seg, seg) IS
89
CREATE FUNCTION seg_ge(seg, seg)
92
LANGUAGE C STRICT IMMUTABLE;
94
COMMENT ON FUNCTION seg_ge(seg, seg) IS
95
'greater than or equal';
97
CREATE FUNCTION seg_contains(seg, seg)
100
LANGUAGE C STRICT IMMUTABLE;
102
COMMENT ON FUNCTION seg_contains(seg, seg) IS
105
CREATE FUNCTION seg_contained(seg, seg)
108
LANGUAGE C STRICT IMMUTABLE;
110
COMMENT ON FUNCTION seg_contained(seg, seg) IS
113
CREATE FUNCTION seg_overlap(seg, seg)
116
LANGUAGE C STRICT IMMUTABLE;
118
COMMENT ON FUNCTION seg_overlap(seg, seg) IS
121
CREATE FUNCTION seg_same(seg, seg)
124
LANGUAGE C STRICT IMMUTABLE;
126
COMMENT ON FUNCTION seg_same(seg, seg) IS
129
CREATE FUNCTION seg_different(seg, seg)
132
LANGUAGE C STRICT IMMUTABLE;
134
COMMENT ON FUNCTION seg_different(seg, seg) IS
137
-- support routines for indexing
139
CREATE FUNCTION seg_cmp(seg, seg)
142
LANGUAGE C STRICT IMMUTABLE;
144
COMMENT ON FUNCTION seg_cmp(seg, seg) IS 'btree comparison function';
146
CREATE FUNCTION seg_union(seg, seg)
149
LANGUAGE C STRICT IMMUTABLE;
151
CREATE FUNCTION seg_inter(seg, seg)
154
LANGUAGE C STRICT IMMUTABLE;
156
CREATE FUNCTION seg_size(seg)
159
LANGUAGE C STRICT IMMUTABLE;
163
CREATE FUNCTION seg_center(seg)
166
LANGUAGE C STRICT IMMUTABLE;
168
CREATE FUNCTION seg_upper(seg)
171
LANGUAGE C STRICT IMMUTABLE;
173
CREATE FUNCTION seg_lower(seg)
176
LANGUAGE C STRICT IMMUTABLE;
189
RESTRICT = scalarltsel,
190
JOIN = scalarltjoinsel
199
RESTRICT = scalarltsel,
200
JOIN = scalarltjoinsel
209
RESTRICT = scalargtsel,
210
JOIN = scalargtjoinsel
219
RESTRICT = scalargtsel,
220
JOIN = scalargtjoinsel
226
PROCEDURE = seg_left,
228
RESTRICT = positionsel,
229
JOIN = positionjoinsel
235
PROCEDURE = seg_over_left,
236
RESTRICT = positionsel,
237
JOIN = positionjoinsel
243
PROCEDURE = seg_overlap,
252
PROCEDURE = seg_over_right,
253
RESTRICT = positionsel,
254
JOIN = positionjoinsel
260
PROCEDURE = seg_right,
262
RESTRICT = positionsel,
263
JOIN = positionjoinsel
269
PROCEDURE = seg_same,
280
PROCEDURE = seg_different,
290
PROCEDURE = seg_contains,
299
PROCEDURE = seg_contained,
309
PROCEDURE = seg_contains,
318
PROCEDURE = seg_contained,
325
-- define the GiST support methods
326
CREATE FUNCTION gseg_consistent(internal,seg,int,oid,internal)
329
LANGUAGE C IMMUTABLE STRICT;
331
CREATE FUNCTION gseg_compress(internal)
334
LANGUAGE C IMMUTABLE STRICT;
336
CREATE FUNCTION gseg_decompress(internal)
339
LANGUAGE C IMMUTABLE STRICT;
341
CREATE FUNCTION gseg_penalty(internal,internal,internal)
344
LANGUAGE C IMMUTABLE STRICT;
346
CREATE FUNCTION gseg_picksplit(internal, internal)
349
LANGUAGE C IMMUTABLE STRICT;
351
CREATE FUNCTION gseg_union(internal, internal)
354
LANGUAGE C IMMUTABLE STRICT;
356
CREATE FUNCTION gseg_same(seg, seg, internal)
359
LANGUAGE C IMMUTABLE STRICT;
362
-- Create the operator classes for indexing
364
CREATE OPERATOR CLASS seg_ops
365
DEFAULT FOR TYPE seg USING btree AS
371
FUNCTION 1 seg_cmp(seg, seg);
373
CREATE OPERATOR CLASS gist_seg_ops
374
DEFAULT FOR TYPE seg USING gist
386
FUNCTION 1 gseg_consistent (internal, seg, int, oid, internal),
387
FUNCTION 2 gseg_union (internal, internal),
388
FUNCTION 3 gseg_compress (internal),
389
FUNCTION 4 gseg_decompress (internal),
390
FUNCTION 5 gseg_penalty (internal, internal, internal),
391
FUNCTION 6 gseg_picksplit (internal, internal),
392
FUNCTION 7 gseg_same (seg, seg, internal);