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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy