Skip to content

Commit f515bc5

Browse files
author
Zakirov Artur
committed
Added more comments in .sql, added rum_ suffixes for SQL functions
1 parent 1d7a399 commit f515bc5

File tree

2 files changed

+113
-74
lines changed

2 files changed

+113
-74
lines changed

rum--1.0.sql

Lines changed: 104 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,17 @@ RETURNS index_am_handler
33
AS 'MODULE_PATHNAME'
44
LANGUAGE C;
55

6-
-- Access method
6+
/*
7+
* RUM access method
8+
*/
9+
710
CREATE ACCESS METHOD rum TYPE INDEX HANDLER rumhandler;
811

9-
-- tsvector opclasses
12+
/*
13+
* RUM built-in types, operators and functions
14+
*/
1015

16+
-- Type used in distance calculations with normalization argument
1117
CREATE TYPE rum_distance_query AS (query tsquery, method int);
1218

1319
CREATE FUNCTION tsquery_to_distance_query(tsquery)
@@ -45,22 +51,52 @@ CREATE OPERATOR <=> (
4551
PROCEDURE = rum_ts_distance
4652
);
4753

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
5056
AS 'MODULE_PATHNAME'
5157
LANGUAGE C IMMUTABLE STRICT;
5258

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
5568
AS 'MODULE_PATHNAME'
5669
LANGUAGE C IMMUTABLE STRICT;
5770

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)
5995
RETURNS internal
6096
AS 'MODULE_PATHNAME'
6197
LANGUAGE C IMMUTABLE STRICT;
6298

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)
64100
RETURNS internal
65101
AS 'MODULE_PATHNAME'
66102
LANGUAGE C IMMUTABLE STRICT;
@@ -85,13 +121,14 @@ RETURNS float8
85121
AS 'MODULE_PATHNAME'
86122
LANGUAGE C IMMUTABLE STRICT;
87123

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)
89126
RETURNS bytea
90127
AS 'MODULE_PATHNAME'
91128
LANGUAGE C IMMUTABLE STRICT;
92129

93130
CREATE OPERATOR CLASS rum_tsvector_ops
94-
FOR TYPE tsvector USING rum
131+
DEFAULT FOR TYPE tsvector USING rum
95132
AS
96133
OPERATOR 1 @@ (tsvector, tsquery),
97134
OPERATOR 2 <=> (tsvector, tsquery) FOR ORDER BY pg_catalog.float_ops,
@@ -106,6 +143,22 @@ AS
106143
FUNCTION 10 rum_ts_join_pos(internal, internal),
107144
STORAGE text;
108145

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+
109162
CREATE OPERATOR CLASS rum_tsvector_hash_ops
110163
FOR TYPE tsvector USING rum
111164
AS
@@ -120,44 +173,10 @@ AS
120173
FUNCTION 8 rum_tsquery_distance(internal,smallint,tsvector,int,internal,internal,internal,internal,internal),
121174
FUNCTION 10 rum_ts_join_pos(internal, internal),
122175
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-
);
160176

177+
/*
178+
* rum_timestamp_ops operator class
179+
*/
161180

162181
-- timestamp operator class
163182

@@ -191,7 +210,7 @@ RETURNS float8
191210
AS 'MODULE_PATHNAME'
192211
LANGUAGE C STRICT IMMUTABLE;
193212

194-
CREATE OPERATOR CLASS timestamp_ops
213+
CREATE OPERATOR CLASS rum_timestamp_ops
195214
DEFAULT FOR TYPE timestamp USING rum
196215
AS
197216
OPERATOR 1 <,
@@ -213,7 +232,11 @@ AS
213232
OPERATOR 22 |=> (timestamp,timestamp) FOR ORDER BY pg_catalog.float_ops,
214233
STORAGE timestamp;
215234

216-
--together
235+
/*
236+
* rum_tsvector_timestamp_ops operator class.
237+
*
238+
* Stores timestamp with tsvector.
239+
*/
217240

218241
CREATE FUNCTION rum_tsquery_timestamp_consistent(internal, smallint, tsvector, integer, internal, internal, internal, internal)
219242
RETURNS bool
@@ -233,6 +256,10 @@ AS
233256
FUNCTION 7 rum_tsquery_pre_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal),
234257
STORAGE text;
235258

259+
/*
260+
* rum_tsvector_hash_timestamp_ops operator class
261+
*/
262+
236263
CREATE OPERATOR CLASS rum_tsvector_hash_timestamp_ops
237264
FOR TYPE tsvector USING rum
238265
AS
@@ -245,46 +272,47 @@ AS
245272
FUNCTION 7 rum_tsquery_pre_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal),
246273
STORAGE integer;
247274

248-
-- timestamptz ops
275+
/*
276+
* rum_timestamptz_ops operator class
277+
*/
249278

250-
CREATE FUNCTION timestamptz_distance(timestamptz, timestamptz)
279+
CREATE FUNCTION rum_timestamptz_distance(timestamptz, timestamptz)
251280
RETURNS float8
252-
AS 'MODULE_PATHNAME', 'timestamp_distance'
281+
AS 'MODULE_PATHNAME', 'rum_timestamp_distance'
253282
LANGUAGE C IMMUTABLE STRICT;
254283

255284
CREATE OPERATOR <=> (
256-
PROCEDURE = timestamptz_distance,
285+
PROCEDURE = rum_timestamptz_distance,
257286
LEFTARG = timestamptz,
258287
RIGHTARG = timestamptz,
259288
COMMUTATOR = <=>
260289
);
261290

262-
CREATE FUNCTION timestamptz_left_distance(timestamptz, timestamptz)
291+
CREATE FUNCTION rum_timestamptz_left_distance(timestamptz, timestamptz)
263292
RETURNS float8
264-
AS 'MODULE_PATHNAME', 'timestamp_left_distance'
293+
AS 'MODULE_PATHNAME', 'rum_timestamp_left_distance'
265294
LANGUAGE C IMMUTABLE STRICT;
266295

267296
CREATE OPERATOR <=| (
268-
PROCEDURE = timestamptz_left_distance,
297+
PROCEDURE = rum_timestamptz_left_distance,
269298
LEFTARG = timestamptz,
270299
RIGHTARG = timestamptz,
271300
COMMUTATOR = |=>
272301
);
273302

274-
CREATE FUNCTION timestamptz_right_distance(timestamptz, timestamptz)
303+
CREATE FUNCTION rum_timestamptz_right_distance(timestamptz, timestamptz)
275304
RETURNS float8
276-
AS 'MODULE_PATHNAME', 'timestamp_right_distance'
305+
AS 'MODULE_PATHNAME', 'rum_timestamp_right_distance'
277306
LANGUAGE C IMMUTABLE STRICT;
278307

279308
CREATE OPERATOR |=> (
280-
PROCEDURE = timestamptz_right_distance,
309+
PROCEDURE = rum_timestamptz_right_distance,
281310
LEFTARG = timestamptz,
282311
RIGHTARG = timestamptz,
283312
COMMUTATOR = <=|
284313
);
285314

286-
287-
CREATE OPERATOR CLASS timestamptz_ops
315+
CREATE OPERATOR CLASS rum_timestamptz_ops
288316
DEFAULT FOR TYPE timestamptz USING rum
289317
AS
290318
OPERATOR 1 <,
@@ -299,14 +327,18 @@ AS
299327
FUNCTION 4 rum_timestamp_consistent(internal,smallint,timestamp,int,internal,internal,internal,internal),
300328
FUNCTION 5 rum_timestamp_compare_prefix(timestamp,timestamp,smallint,internal),
301329
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
303331
FUNCTION 9 rum_timestamp_outer_distance(timestamp, timestamp, smallint),
304332
OPERATOR 20 <=> (timestamptz,timestamptz) FOR ORDER BY pg_catalog.float_ops,
305333
OPERATOR 21 <=| (timestamptz,timestamptz) FOR ORDER BY pg_catalog.float_ops,
306334
OPERATOR 22 |=> (timestamptz,timestamptz) FOR ORDER BY pg_catalog.float_ops,
307335
STORAGE timestamptz;
308336

309-
--together
337+
/*
338+
* rum_tsvector_timestamptz_ops operator class.
339+
*
340+
* Stores tsvector with timestamptz.
341+
*/
310342

311343
CREATE OPERATOR CLASS rum_tsvector_timestamptz_ops
312344
FOR TYPE tsvector USING rum
@@ -321,6 +353,10 @@ AS
321353
FUNCTION 7 rum_tsquery_pre_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal),
322354
STORAGE text;
323355

356+
/*
357+
* rum_tsvector_hash_timestamptz_ops operator class
358+
*/
359+
324360
CREATE OPERATOR CLASS rum_tsvector_hash_timestamptz_ops
325361
FOR TYPE tsvector USING rum
326362
AS
@@ -333,7 +369,11 @@ AS
333369
FUNCTION 7 rum_tsquery_pre_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal),
334370
STORAGE integer;
335371

336-
-- inversed
372+
/*
373+
* rum_tsquery_ops operator class.
374+
*
375+
* Used for inversed text search.
376+
*/
337377

338378
CREATE FUNCTION ruminv_extract_tsquery(tsquery,internal,internal,internal,internal)
339379
RETURNS internal
@@ -365,4 +405,3 @@ AS
365405
FUNCTION 4 ruminv_tsvector_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal),
366406
FUNCTION 6 ruminv_tsquery_config(internal),
367407
STORAGE text;
368-

rum_timestamp.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,9 @@ rum_timestamp_consistent(PG_FUNCTION_ARGS)
149149
PG_RETURN_BOOL(true);
150150
}
151151

152-
PG_FUNCTION_INFO_V1(timestamp_distance);
152+
PG_FUNCTION_INFO_V1(rum_timestamp_distance);
153153
Datum
154-
timestamp_distance(PG_FUNCTION_ARGS)
154+
rum_timestamp_distance(PG_FUNCTION_ARGS)
155155
{
156156
Timestamp dt1 = PG_GETARG_TIMESTAMP(0);
157157
Timestamp dt2 = PG_GETARG_TIMESTAMP(1);
@@ -174,9 +174,9 @@ timestamp_distance(PG_FUNCTION_ARGS)
174174
PG_RETURN_FLOAT8(diff);
175175
}
176176

177-
PG_FUNCTION_INFO_V1(timestamp_left_distance);
177+
PG_FUNCTION_INFO_V1(rum_timestamp_left_distance);
178178
Datum
179-
timestamp_left_distance(PG_FUNCTION_ARGS)
179+
rum_timestamp_left_distance(PG_FUNCTION_ARGS)
180180
{
181181
Timestamp dt1 = PG_GETARG_TIMESTAMP(0);
182182
Timestamp dt2 = PG_GETARG_TIMESTAMP(1);
@@ -199,9 +199,9 @@ timestamp_left_distance(PG_FUNCTION_ARGS)
199199
PG_RETURN_FLOAT8(diff);
200200
}
201201

202-
PG_FUNCTION_INFO_V1(timestamp_right_distance);
202+
PG_FUNCTION_INFO_V1(rum_timestamp_right_distance);
203203
Datum
204-
timestamp_right_distance(PG_FUNCTION_ARGS)
204+
rum_timestamp_right_distance(PG_FUNCTION_ARGS)
205205
{
206206
Timestamp dt1 = PG_GETARG_TIMESTAMP(0);
207207
Timestamp dt2 = PG_GETARG_TIMESTAMP(1);
@@ -234,17 +234,17 @@ rum_timestamp_outer_distance(PG_FUNCTION_ARGS)
234234
switch (strategy)
235235
{
236236
case RUM_TMST_DISTANCE:
237-
diff = DirectFunctionCall2(timestamp_distance,
237+
diff = DirectFunctionCall2(rum_timestamp_distance,
238238
PG_GETARG_DATUM(0),
239239
PG_GETARG_DATUM(1));
240240
break;
241241
case RUM_TMST_LEFT_DISTANCE:
242-
diff = DirectFunctionCall2(timestamp_left_distance,
242+
diff = DirectFunctionCall2(rum_timestamp_left_distance,
243243
PG_GETARG_DATUM(0),
244244
PG_GETARG_DATUM(1));
245245
break;
246246
case RUM_TMST_RIGHT_DISTANCE:
247-
diff = DirectFunctionCall2(timestamp_right_distance,
247+
diff = DirectFunctionCall2(rum_timestamp_right_distance,
248248
PG_GETARG_DATUM(0),
249249
PG_GETARG_DATUM(1));
250250
break;

0 commit comments

Comments
 (0)