@@ -3,11 +3,17 @@ RETURNS index_am_handler
3
3
AS ' MODULE_PATHNAME'
4
4
LANGUAGE C;
5
5
6
- -- Access method
6
+ /*
7
+ * RUM access method
8
+ */
9
+
7
10
CREATE ACCESS METHOD rum TYPE INDEX HANDLER rumhandler;
8
11
9
- -- tsvector opclasses
12
+ /*
13
+ * RUM built-in types, operators and functions
14
+ */
10
15
16
+ -- Type used in distance calculations with normalization argument
11
17
CREATE TYPE rum_distance_query AS (query tsquery, method int );
12
18
13
19
CREATE FUNCTION tsquery_to_distance_query (tsquery)
@@ -45,22 +51,52 @@ CREATE OPERATOR <=> (
45
51
PROCEDURE = rum_ts_distance
46
52
);
47
53
48
- CREATE FUNCTION rum_extract_tsvector (tsvector,internal,internal,internal,internal )
49
- RETURNS internal
54
+ CREATE FUNCTION rum_timestamp_distance ( timestamp , timestamp )
55
+ RETURNS float8
50
56
AS ' MODULE_PATHNAME'
51
57
LANGUAGE C IMMUTABLE STRICT;
52
58
53
- CREATE FUNCTION rum_extract_tsvector_hash (tsvector,internal,internal,internal,internal)
54
- RETURNS internal
59
+ CREATE OPERATOR <=> (
60
+ PROCEDURE = rum_timestamp_distance,
61
+ LEFTARG = timestamp ,
62
+ RIGHTARG = timestamp ,
63
+ COMMUTATOR = <=>
64
+ );
65
+
66
+ CREATE FUNCTION rum_timestamp_left_distance (timestamp , timestamp )
67
+ RETURNS float8
55
68
AS ' MODULE_PATHNAME'
56
69
LANGUAGE C IMMUTABLE STRICT;
57
70
58
- CREATE FUNCTION rum_extract_tsquery (tsquery,internal,smallint ,internal,internal,internal,internal)
71
+ CREATE OPERATOR <= | (
72
+ PROCEDURE = rum_timestamp_left_distance,
73
+ LEFTARG = timestamp ,
74
+ RIGHTARG = timestamp ,
75
+ COMMUTATOR = |=>
76
+ );
77
+
78
+ CREATE FUNCTION rum_timestamp_right_distance (timestamp , timestamp )
79
+ RETURNS float8
80
+ AS ' MODULE_PATHNAME'
81
+ LANGUAGE C IMMUTABLE STRICT;
82
+
83
+ CREATE OPERATOR |=> (
84
+ PROCEDURE = rum_timestamp_right_distance,
85
+ LEFTARG = timestamp ,
86
+ RIGHTARG = timestamp ,
87
+ COMMUTATOR = <= |
88
+ );
89
+
90
+ /*
91
+ * rum_tsvector_ops operator class
92
+ */
93
+
94
+ CREATE FUNCTION rum_extract_tsvector (tsvector,internal,internal,internal,internal)
59
95
RETURNS internal
60
96
AS ' MODULE_PATHNAME'
61
97
LANGUAGE C IMMUTABLE STRICT;
62
98
63
- CREATE FUNCTION rum_extract_tsquery_hash (tsquery,internal,smallint ,internal,internal,internal,internal)
99
+ CREATE FUNCTION rum_extract_tsquery (tsquery,internal,smallint ,internal,internal,internal,internal)
64
100
RETURNS internal
65
101
AS ' MODULE_PATHNAME'
66
102
LANGUAGE C IMMUTABLE STRICT;
@@ -85,13 +121,14 @@ RETURNS float8
85
121
AS ' MODULE_PATHNAME'
86
122
LANGUAGE C IMMUTABLE STRICT;
87
123
88
- CREATE FUNCTION rum_ts_join_pos (internal, internal) -- to prevent calling from SQL
124
+ -- To prevent calling from SQL
125
+ CREATE FUNCTION rum_ts_join_pos (internal, internal)
89
126
RETURNS bytea
90
127
AS ' MODULE_PATHNAME'
91
128
LANGUAGE C IMMUTABLE STRICT;
92
129
93
130
CREATE OPERATOR CLASS rum_tsvector_ops
94
- FOR TYPE tsvector USING rum
131
+ DEFAULT FOR TYPE tsvector USING rum
95
132
AS
96
133
OPERATOR 1 @@ (tsvector, tsquery),
97
134
OPERATOR 2 <=> (tsvector, tsquery) FOR ORDER BY pg_catalog .float_ops ,
106
143
FUNCTION 10 rum_ts_join_pos(internal, internal),
107
144
STORAGE text ;
108
145
146
+ /*
147
+ * rum_tsvector_hash_ops operator class.
148
+ *
149
+ * Stores hash of entries as keys in index.
150
+ */
151
+
152
+ CREATE FUNCTION rum_extract_tsvector_hash (tsvector,internal,internal,internal,internal)
153
+ RETURNS internal
154
+ AS ' MODULE_PATHNAME'
155
+ LANGUAGE C IMMUTABLE STRICT;
156
+
157
+ CREATE FUNCTION rum_extract_tsquery_hash (tsquery,internal,smallint ,internal,internal,internal,internal)
158
+ RETURNS internal
159
+ AS ' MODULE_PATHNAME'
160
+ LANGUAGE C IMMUTABLE STRICT;
161
+
109
162
CREATE OPERATOR CLASS rum_tsvector_hash_ops
110
163
FOR TYPE tsvector USING rum
111
164
AS
120
173
FUNCTION 8 rum_tsquery_distance(internal,smallint ,tsvector,int ,internal,internal,internal,internal,internal),
121
174
FUNCTION 10 rum_ts_join_pos(internal, internal),
122
175
STORAGE integer ;
123
- -- timestamp ops
124
-
125
- CREATE FUNCTION timestamp_distance (timestamp , timestamp )
126
- RETURNS float8
127
- AS ' MODULE_PATHNAME'
128
- LANGUAGE C IMMUTABLE STRICT;
129
-
130
- CREATE OPERATOR <=> (
131
- PROCEDURE = timestamp_distance,
132
- LEFTARG = timestamp ,
133
- RIGHTARG = timestamp ,
134
- COMMUTATOR = <=>
135
- );
136
-
137
- CREATE FUNCTION timestamp_left_distance (timestamp , timestamp )
138
- RETURNS float8
139
- AS ' MODULE_PATHNAME'
140
- LANGUAGE C IMMUTABLE STRICT;
141
-
142
- CREATE OPERATOR <= | (
143
- PROCEDURE = timestamp_left_distance,
144
- LEFTARG = timestamp ,
145
- RIGHTARG = timestamp ,
146
- COMMUTATOR = |=>
147
- );
148
-
149
- CREATE FUNCTION timestamp_right_distance (timestamp , timestamp )
150
- RETURNS float8
151
- AS ' MODULE_PATHNAME'
152
- LANGUAGE C IMMUTABLE STRICT;
153
-
154
- CREATE OPERATOR |=> (
155
- PROCEDURE = timestamp_right_distance,
156
- LEFTARG = timestamp ,
157
- RIGHTARG = timestamp ,
158
- COMMUTATOR = <= |
159
- );
160
176
177
+ /*
178
+ * rum_timestamp_ops operator class
179
+ */
161
180
162
181
-- timestamp operator class
163
182
@@ -191,7 +210,7 @@ RETURNS float8
191
210
AS ' MODULE_PATHNAME'
192
211
LANGUAGE C STRICT IMMUTABLE;
193
212
194
- CREATE OPERATOR CLASS timestamp_ops
213
+ CREATE OPERATOR CLASS rum_timestamp_ops
195
214
DEFAULT FOR TYPE timestamp USING rum
196
215
AS
197
216
OPERATOR 1 < ,
213
232
OPERATOR 22 |=> (timestamp ,timestamp ) FOR ORDER BY pg_catalog .float_ops ,
214
233
STORAGE timestamp ;
215
234
216
- -- together
235
+ /*
236
+ * rum_tsvector_timestamp_ops operator class.
237
+ *
238
+ * Stores timestamp with tsvector.
239
+ */
217
240
218
241
CREATE FUNCTION rum_tsquery_timestamp_consistent (internal, smallint , tsvector, integer , internal, internal, internal, internal)
219
242
RETURNS bool
233
256
FUNCTION 7 rum_tsquery_pre_consistent(internal,smallint ,tsvector,int ,internal,internal,internal,internal),
234
257
STORAGE text ;
235
258
259
+ /*
260
+ * rum_tsvector_hash_timestamp_ops operator class
261
+ */
262
+
236
263
CREATE OPERATOR CLASS rum_tsvector_hash_timestamp_ops
237
264
FOR TYPE tsvector USING rum
238
265
AS
245
272
FUNCTION 7 rum_tsquery_pre_consistent(internal,smallint ,tsvector,int ,internal,internal,internal,internal),
246
273
STORAGE integer ;
247
274
248
- -- timestamptz ops
275
+ /*
276
+ * rum_timestamptz_ops operator class
277
+ */
249
278
250
- CREATE FUNCTION timestamptz_distance (timestamptz , timestamptz )
279
+ CREATE FUNCTION rum_timestamptz_distance (timestamptz , timestamptz )
251
280
RETURNS float8
252
- AS ' MODULE_PATHNAME' , ' timestamp_distance '
281
+ AS ' MODULE_PATHNAME' , ' rum_timestamp_distance '
253
282
LANGUAGE C IMMUTABLE STRICT;
254
283
255
284
CREATE OPERATOR <=> (
256
- PROCEDURE = timestamptz_distance ,
285
+ PROCEDURE = rum_timestamptz_distance ,
257
286
LEFTARG = timestamptz ,
258
287
RIGHTARG = timestamptz ,
259
288
COMMUTATOR = <=>
260
289
);
261
290
262
- CREATE FUNCTION timestamptz_left_distance (timestamptz , timestamptz )
291
+ CREATE FUNCTION rum_timestamptz_left_distance (timestamptz , timestamptz )
263
292
RETURNS float8
264
- AS ' MODULE_PATHNAME' , ' timestamp_left_distance '
293
+ AS ' MODULE_PATHNAME' , ' rum_timestamp_left_distance '
265
294
LANGUAGE C IMMUTABLE STRICT;
266
295
267
296
CREATE OPERATOR <= | (
268
- PROCEDURE = timestamptz_left_distance ,
297
+ PROCEDURE = rum_timestamptz_left_distance ,
269
298
LEFTARG = timestamptz ,
270
299
RIGHTARG = timestamptz ,
271
300
COMMUTATOR = |=>
272
301
);
273
302
274
- CREATE FUNCTION timestamptz_right_distance (timestamptz , timestamptz )
303
+ CREATE FUNCTION rum_timestamptz_right_distance (timestamptz , timestamptz )
275
304
RETURNS float8
276
- AS ' MODULE_PATHNAME' , ' timestamp_right_distance '
305
+ AS ' MODULE_PATHNAME' , ' rum_timestamp_right_distance '
277
306
LANGUAGE C IMMUTABLE STRICT;
278
307
279
308
CREATE OPERATOR |=> (
280
- PROCEDURE = timestamptz_right_distance ,
309
+ PROCEDURE = rum_timestamptz_right_distance ,
281
310
LEFTARG = timestamptz ,
282
311
RIGHTARG = timestamptz ,
283
312
COMMUTATOR = <= |
284
313
);
285
314
286
-
287
- CREATE OPERATOR CLASS timestamptz_ops
315
+ CREATE OPERATOR CLASS rum_timestamptz_ops
288
316
DEFAULT FOR TYPE timestamptz USING rum
289
317
AS
290
318
OPERATOR 1 < ,
299
327
FUNCTION 4 rum_timestamp_consistent(internal,smallint ,timestamp ,int ,internal,internal,internal,internal),
300
328
FUNCTION 5 rum_timestamp_compare_prefix(timestamp ,timestamp ,smallint ,internal),
301
329
FUNCTION 6 rum_timestamp_config(internal),
302
- -- support to timestamptz disttance in rum_tsvector_timestamptz_ops
330
+ -- support to timestamptz distance in rum_tsvector_timestamptz_ops
303
331
FUNCTION 9 rum_timestamp_outer_distance(timestamp , timestamp , smallint ),
304
332
OPERATOR 20 <=> (timestamptz ,timestamptz ) FOR ORDER BY pg_catalog .float_ops ,
305
333
OPERATOR 21 <= | (timestamptz ,timestamptz ) FOR ORDER BY pg_catalog .float_ops ,
306
334
OPERATOR 22 |=> (timestamptz ,timestamptz ) FOR ORDER BY pg_catalog .float_ops ,
307
335
STORAGE timestamptz ;
308
336
309
- -- together
337
+ /*
338
+ * rum_tsvector_timestamptz_ops operator class.
339
+ *
340
+ * Stores tsvector with timestamptz.
341
+ */
310
342
311
343
CREATE OPERATOR CLASS rum_tsvector_timestamptz_ops
312
344
FOR TYPE tsvector USING rum
321
353
FUNCTION 7 rum_tsquery_pre_consistent(internal,smallint ,tsvector,int ,internal,internal,internal,internal),
322
354
STORAGE text ;
323
355
356
+ /*
357
+ * rum_tsvector_hash_timestamptz_ops operator class
358
+ */
359
+
324
360
CREATE OPERATOR CLASS rum_tsvector_hash_timestamptz_ops
325
361
FOR TYPE tsvector USING rum
326
362
AS
333
369
FUNCTION 7 rum_tsquery_pre_consistent(internal,smallint ,tsvector,int ,internal,internal,internal,internal),
334
370
STORAGE integer ;
335
371
336
- -- inversed
372
+ /*
373
+ * rum_tsquery_ops operator class.
374
+ *
375
+ * Used for inversed text search.
376
+ */
337
377
338
378
CREATE FUNCTION ruminv_extract_tsquery (tsquery,internal,internal,internal,internal)
339
379
RETURNS internal
365
405
FUNCTION 4 ruminv_tsvector_consistent(internal,smallint ,tsvector,int ,internal,internal,internal,internal),
366
406
FUNCTION 6 ruminv_tsquery_config(internal),
367
407
STORAGE text ;
368
-
0 commit comments