Skip to content

Commit 34b2b70

Browse files
committed
1.0 -> 1.1 works for now
1 parent 6bd1d00 commit 34b2b70

File tree

5 files changed

+95
-65
lines changed

5 files changed

+95
-65
lines changed

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ all: rum--1.1.sql
4343
rum--1.1.sql: rum--1.0.sql rum--1.0--1.1.sql
4444
cat rum--1.0.sql rum--1.0--1.1.sql > rum--1.1.sql
4545

46-
rum--1.0--1.1.sql: Makefile gen_rum_sql.pl
47-
perl gen_rum_sql.pl > rum--1.0--1.1.sql
46+
rum--1.0--1.1.sql: Makefile gen_rum_sql--1.0--1.1.pl
47+
perl gen_rum_sql--1.0--1.1.pl > rum--1.0--1.1.sql
4848

4949
install: installincludes
5050

TODO

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
1. with naturalOrder=true make scan the rest to be consistent with seqscan
2-
2. add leftlink to data page to privide backward scan on index (<=| op)
1+
1. with naturalOrder=true make scan the rest to be consistent with seqscan [done]
2+
2. add leftlink to data page to privide backward scan on index (<=| op) [done]
33
3. Compression of ItemPointer for use_alternative_order
44
4. Compression addInfo
5-
5. Remove FROM_STRATEGY ugly magick
5+
5. Remove FROM_STRATEGY ugly magick [done]
66

77

88
BTREE:
9-
1 fix changes in rum--1.0.sql
9+
1 fix changes in rum--1.0.sql [done]
1010
2 adding using as addinfo

gen_rum_sql.pl renamed to gen_rum_sql--1.0--1.1.pl

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
use warnings;
33

44
my $func_base_template=<<EOT;
5-
CREATE FUNCTION rum_extract_value_TYPEIDENT(TYPENAME, internal)
5+
CREATE FUNCTION rum_TYPEIDENT_extract_value(TYPENAME, internal)
66
RETURNS internal
77
AS 'MODULE_PATHNAME'
88
LANGUAGE C STRICT IMMUTABLE;
99
10-
CREATE FUNCTION rum_compare_prefix_TYPEIDENT(TYPENAME, TYPENAME, int2, internal)
10+
CREATE FUNCTION rum_TYPEIDENT_compare_prefix(TYPENAME, TYPENAME, int2, internal)
1111
RETURNS int4
1212
AS 'MODULE_PATHNAME'
1313
LANGUAGE C STRICT IMMUTABLE;
1414
15-
CREATE FUNCTION rum_extract_query_TYPEIDENT(TYPENAME, internal, int2, internal, internal)
15+
CREATE FUNCTION rum_TYPEIDENT_extract_query(TYPENAME, internal, int2, internal, internal)
1616
RETURNS internal
1717
AS 'MODULE_PATHNAME'
1818
LANGUAGE C STRICT IMMUTABLE;
@@ -21,7 +21,7 @@
2121

2222
my $opclass_base_template=<<EOT;
2323
24-
CREATE OPERATOR CLASS TYPEIDENT_ops
24+
CREATE OPERATOR CLASS rum_TYPEIDENT_ops
2525
DEFAULT FOR TYPE TYPENAME USING rum
2626
AS
2727
OPERATOR 1 < (TYPECMPTYPE, TYPECMPTYPE),
@@ -30,10 +30,10 @@
3030
OPERATOR 4 >=(TYPECMPTYPE, TYPECMPTYPE),
3131
OPERATOR 5 > (TYPECMPTYPE, TYPECMPTYPE),
3232
FUNCTION 1 TYPECMPFUNC(TYPECMPTYPE,TYPECMPTYPE),
33-
FUNCTION 2 rum_extract_value_TYPESUBIDENT(TYPESUBNAME, internal),
34-
FUNCTION 3 rum_extract_query_TYPESUBIDENT(TYPESUBNAME, internal, int2, internal, internal),
33+
FUNCTION 2 rum_TYPESUBIDENT_extract_value(TYPESUBNAME, internal),
34+
FUNCTION 3 rum_TYPESUBIDENT_extract_query(TYPESUBNAME, internal, int2, internal, internal),
3535
FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal),
36-
FUNCTION 5 rum_compare_prefix_TYPESUBIDENT(TYPESUBNAME,TYPESUBNAME,int2, internal),
36+
FUNCTION 5 rum_TYPESUBIDENT_compare_prefix(TYPESUBNAME,TYPESUBNAME,int2, internal),
3737
STORAGE TYPENAME;
3838
3939
EOT
@@ -184,6 +184,15 @@
184184
},
185185
);
186186

187+
##############Generate!!!
188+
189+
print <<EOT;
190+
CREATE FUNCTION rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal)
191+
RETURNS bool
192+
AS 'MODULE_PATHNAME'
193+
LANGUAGE C STRICT IMMUTABLE;
194+
EOT
195+
187196
foreach my $t (@opinfo)
188197
{
189198
print "/*--------------------$t->{TYPENAME}-----------------------*/\n\n";
@@ -204,3 +213,11 @@
204213
print $x;
205214
}
206215
}
216+
217+
# Drop doesn't work
218+
#print <<EOT;
219+
#ALTER OPERATOR FAMILY rum_timestamp_ops USING rum DROP FUNCTION 4
220+
# (timestamp, timestamp); -- strange definition
221+
#ALTER OPERATOR FAMILY rum_timestamp_ops USING rum ADD FUNCTION 4
222+
# rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal);
223+
#EOT

rum--1.0.sql

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -51,37 +51,37 @@ CREATE OPERATOR <=> (
5151
PROCEDURE = rum_ts_distance
5252
);
5353

54-
CREATE FUNCTION rum_distance_timestamp(timestamp, timestamp)
54+
CREATE FUNCTION rum_timestamp_distance(timestamp, timestamp)
5555
RETURNS float8
5656
AS 'MODULE_PATHNAME'
5757
LANGUAGE C IMMUTABLE STRICT;
5858

5959
CREATE OPERATOR <=> (
60-
PROCEDURE = rum_distance_timestamp,
60+
PROCEDURE = rum_timestamp_distance,
6161
LEFTARG = timestamp,
6262
RIGHTARG = timestamp,
6363
COMMUTATOR = <=>
6464
);
6565

66-
CREATE FUNCTION rum_left_distance_timestamp(timestamp, timestamp)
66+
CREATE FUNCTION rum_timestamp_left_distance(timestamp, timestamp)
6767
RETURNS float8
6868
AS 'MODULE_PATHNAME'
6969
LANGUAGE C IMMUTABLE STRICT;
7070

7171
CREATE OPERATOR <=| (
72-
PROCEDURE = rum_left_distance_timestamp,
72+
PROCEDURE = rum_timestamp_left_distance,
7373
LEFTARG = timestamp,
7474
RIGHTARG = timestamp,
7575
COMMUTATOR = |=>
7676
);
7777

78-
CREATE FUNCTION rum_right_distance_timestamp(timestamp, timestamp)
78+
CREATE FUNCTION rum_timestamp_right_distance(timestamp, timestamp)
7979
RETURNS float8
8080
AS 'MODULE_PATHNAME'
8181
LANGUAGE C IMMUTABLE STRICT;
8282

8383
CREATE OPERATOR |=> (
84-
PROCEDURE = rum_right_distance_timestamp,
84+
PROCEDURE = rum_timestamp_right_distance,
8585
LEFTARG = timestamp,
8686
RIGHTARG = timestamp,
8787
COMMUTATOR = <=|
@@ -180,32 +180,32 @@ AS
180180

181181
-- timestamp operator class
182182

183-
CREATE FUNCTION rum_extract_value_timestamp(timestamp,internal,internal,internal,internal)
183+
CREATE FUNCTION rum_timestamp_extract_value(timestamp,internal,internal,internal,internal)
184184
RETURNS internal
185185
AS 'MODULE_PATHNAME'
186186
LANGUAGE C STRICT IMMUTABLE;
187187

188-
CREATE FUNCTION rum_compare_prefix_timestamp(timestamp,timestamp,smallint,internal)
188+
CREATE FUNCTION rum_timestamp_compare_prefix(timestamp,timestamp,smallint,internal)
189189
RETURNS int4
190190
AS 'MODULE_PATHNAME'
191191
LANGUAGE C STRICT IMMUTABLE;
192192

193-
CREATE FUNCTION rum_config_timestamp(internal)
193+
CREATE FUNCTION rum_timestamp_config(internal)
194194
RETURNS void
195195
AS 'MODULE_PATHNAME'
196196
LANGUAGE C IMMUTABLE STRICT;
197197

198-
CREATE FUNCTION rum_extract_query_timestamp(timestamp,internal,smallint,internal,internal,internal,internal)
198+
CREATE FUNCTION rum_timestamp_extract_query(timestamp,internal,smallint,internal,internal,internal,internal)
199199
RETURNS internal
200200
AS 'MODULE_PATHNAME'
201201
LANGUAGE C STRICT IMMUTABLE;
202202

203-
CREATE FUNCTION rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal)
203+
CREATE FUNCTION rum_timestamp_consistent(internal,smallint,timestamp,int,internal,internal,internal,internal)
204204
RETURNS bool
205205
AS 'MODULE_PATHNAME'
206206
LANGUAGE C STRICT IMMUTABLE;
207207

208-
CREATE FUNCTION rum_outer_distance_timestamp(timestamp, timestamp, smallint)
208+
CREATE FUNCTION rum_timestamp_outer_distance(timestamp, timestamp, smallint)
209209
RETURNS float8
210210
AS 'MODULE_PATHNAME'
211211
LANGUAGE C STRICT IMMUTABLE;
@@ -220,13 +220,13 @@ AS
220220
OPERATOR 5 >,
221221
--support
222222
FUNCTION 1 timestamp_cmp(timestamp,timestamp),
223-
FUNCTION 2 rum_extract_value_timestamp(timestamp,internal,internal,internal,internal),
224-
FUNCTION 3 rum_extract_query_timestamp(timestamp,internal,smallint,internal,internal,internal,internal),
225-
FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal),
226-
FUNCTION 5 rum_compare_prefix_timestamp(timestamp,timestamp,smallint,internal),
227-
FUNCTION 6 rum_config_timestamp(internal),
223+
FUNCTION 2 rum_timestamp_extract_value(timestamp,internal,internal,internal,internal),
224+
FUNCTION 3 rum_timestamp_extract_query(timestamp,internal,smallint,internal,internal,internal,internal),
225+
FUNCTION 4 rum_timestamp_consistent(internal,smallint,timestamp,int,internal,internal,internal,internal),
226+
FUNCTION 5 rum_timestamp_compare_prefix(timestamp,timestamp,smallint,internal),
227+
FUNCTION 6 rum_timestamp_config(internal),
228228
-- support to timestamp disttance in rum_tsvector_timestamp_ops
229-
FUNCTION 9 rum_outer_distance_timestamp(timestamp, timestamp, smallint),
229+
FUNCTION 9 rum_timestamp_outer_distance(timestamp, timestamp, smallint),
230230
OPERATOR 20 <=> (timestamp,timestamp) FOR ORDER BY pg_catalog.float_ops,
231231
OPERATOR 21 <=| (timestamp,timestamp) FOR ORDER BY pg_catalog.float_ops,
232232
OPERATOR 22 |=> (timestamp,timestamp) FOR ORDER BY pg_catalog.float_ops,
@@ -276,37 +276,37 @@ AS
276276
* rum_timestamptz_ops operator class
277277
*/
278278

279-
CREATE FUNCTION rum_distance_timestamptz(timestamptz, timestamptz)
279+
CREATE FUNCTION rum_timestamptz_distance(timestamptz, timestamptz)
280280
RETURNS float8
281-
AS 'MODULE_PATHNAME', 'rum_distance_timestamp'
281+
AS 'MODULE_PATHNAME', 'rum_timestamp_distance'
282282
LANGUAGE C IMMUTABLE STRICT;
283283

284284
CREATE OPERATOR <=> (
285-
PROCEDURE = rum_distance_timestamptz,
285+
PROCEDURE = rum_timestamptz_distance,
286286
LEFTARG = timestamptz,
287287
RIGHTARG = timestamptz,
288288
COMMUTATOR = <=>
289289
);
290290

291-
CREATE FUNCTION rum_left_distance_timestamptz(timestamptz, timestamptz)
291+
CREATE FUNCTION rum_timestamptz_left_distance(timestamptz, timestamptz)
292292
RETURNS float8
293-
AS 'MODULE_PATHNAME', 'rum_left_distance_timestamp'
293+
AS 'MODULE_PATHNAME', 'rum_timestamp_left_distance'
294294
LANGUAGE C IMMUTABLE STRICT;
295295

296296
CREATE OPERATOR <=| (
297-
PROCEDURE = rum_left_distance_timestamptz,
297+
PROCEDURE = rum_timestamptz_left_distance,
298298
LEFTARG = timestamptz,
299299
RIGHTARG = timestamptz,
300300
COMMUTATOR = |=>
301301
);
302302

303-
CREATE FUNCTION rum_right_distance_timestamptz(timestamptz, timestamptz)
303+
CREATE FUNCTION rum_timestamptz_right_distance(timestamptz, timestamptz)
304304
RETURNS float8
305-
AS 'MODULE_PATHNAME', 'rum_right_distance_timestamp'
305+
AS 'MODULE_PATHNAME', 'rum_timestamp_right_distance'
306306
LANGUAGE C IMMUTABLE STRICT;
307307

308308
CREATE OPERATOR |=> (
309-
PROCEDURE = rum_right_distance_timestamptz,
309+
PROCEDURE = rum_timestamptz_right_distance,
310310
LEFTARG = timestamptz,
311311
RIGHTARG = timestamptz,
312312
COMMUTATOR = <=|
@@ -322,13 +322,13 @@ AS
322322
OPERATOR 5 >,
323323
--support
324324
FUNCTION 1 timestamptz_cmp(timestamptz,timestamptz),
325-
FUNCTION 2 rum_extract_value_timestamp(timestamp,internal,internal,internal,internal),
326-
FUNCTION 3 rum_extract_query_timestamp(timestamp,internal,smallint,internal,internal,internal,internal),
327-
FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal),
328-
FUNCTION 5 rum_compare_prefix_timestamp(timestamp,timestamp,smallint,internal),
329-
FUNCTION 6 rum_config_timestamp(internal),
325+
FUNCTION 2 rum_timestamp_extract_value(timestamp,internal,internal,internal,internal),
326+
FUNCTION 3 rum_timestamp_extract_query(timestamp,internal,smallint,internal,internal,internal,internal),
327+
FUNCTION 4 rum_timestamp_consistent(internal,smallint,timestamp,int,internal,internal,internal,internal),
328+
FUNCTION 5 rum_timestamp_compare_prefix(timestamp,timestamp,smallint,internal),
329+
FUNCTION 6 rum_timestamp_config(internal),
330330
-- support to timestamptz distance in rum_tsvector_timestamptz_ops
331-
FUNCTION 9 rum_outer_distance_timestamp(timestamp, timestamp, smallint),
331+
FUNCTION 9 rum_timestamp_outer_distance(timestamp, timestamp, smallint),
332332
OPERATOR 20 <=> (timestamptz,timestamptz) FOR ORDER BY pg_catalog.float_ops,
333333
OPERATOR 21 <=| (timestamptz,timestamptz) FOR ORDER BY pg_catalog.float_ops,
334334
OPERATOR 22 |=> (timestamptz,timestamptz) FOR ORDER BY pg_catalog.float_ops,

src/btree_rum.c

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -178,34 +178,35 @@ rum_btree_consistent(PG_FUNCTION_ARGS)
178178
PG_RETURN_BOOL(true);
179179
}
180180

181+
181182
/*** RUM_SUPPORT macro defines the datatype specific functions ***/
182183

183184
#define RUM_SUPPORT(type, is_varlena, leftmostvalue, typecmp) \
184-
PG_FUNCTION_INFO_V1(rum_extract_value_##type); \
185+
PG_FUNCTION_INFO_V1(rum_##type##_extract_value); \
185186
Datum \
186-
rum_extract_value_##type(PG_FUNCTION_ARGS) \
187+
rum_##type##_extract_value(PG_FUNCTION_ARGS) \
187188
{ \
188189
return rum_btree_extract_value(fcinfo, is_varlena); \
189190
} \
190-
PG_FUNCTION_INFO_V1(rum_extract_query_##type); \
191+
PG_FUNCTION_INFO_V1(rum_##type##_extract_query); \
191192
Datum \
192-
rum_extract_query_##type(PG_FUNCTION_ARGS) \
193+
rum_##type##_extract_query(PG_FUNCTION_ARGS) \
193194
{ \
194195
return rum_btree_extract_query(fcinfo, \
195196
is_varlena, leftmostvalue, typecmp); \
196197
} \
197-
PG_FUNCTION_INFO_V1(rum_compare_prefix_##type); \
198+
PG_FUNCTION_INFO_V1(rum_##type##_compare_prefix); \
198199
Datum \
199-
rum_compare_prefix_##type(PG_FUNCTION_ARGS) \
200+
rum_##type##_compare_prefix(PG_FUNCTION_ARGS) \
200201
{ \
201202
return rum_btree_compare_prefix(fcinfo); \
202203
}
203204

204205
#define RUM_SUPPORT_DIST(type, is_varlena, leftmostvalue, typecmp, isinfinite, subtract) \
205206
RUM_SUPPORT(type, is_varlena, leftmostvalue, typecmp) \
206-
PG_FUNCTION_INFO_V1(rum_config_##type); \
207+
PG_FUNCTION_INFO_V1(rum_##type##_config); \
207208
Datum \
208-
rum_config_##type(PG_FUNCTION_ARGS) \
209+
rum_##type##_config(PG_FUNCTION_ARGS) \
209210
{ \
210211
RumConfig *config = (RumConfig *) PG_GETARG_POINTER(0); \
211212
\
@@ -221,9 +222,9 @@ rum_config_##type(PG_FUNCTION_ARGS) \
221222
\
222223
PG_RETURN_VOID(); \
223224
} \
224-
PG_FUNCTION_INFO_V1(rum_distance_##type); \
225+
PG_FUNCTION_INFO_V1(rum_##type##_distance); \
225226
Datum \
226-
rum_distance_##type(PG_FUNCTION_ARGS) \
227+
rum_##type##_distance(PG_FUNCTION_ARGS) \
227228
{ \
228229
Datum a = PG_GETARG_DATUM(0); \
229230
Datum b = PG_GETARG_DATUM(1); \
@@ -246,9 +247,9 @@ rum_distance_##type(PG_FUNCTION_ARGS) \
246247
\
247248
PG_RETURN_FLOAT8(diff); \
248249
} \
249-
PG_FUNCTION_INFO_V1(rum_left_distance_##type); \
250+
PG_FUNCTION_INFO_V1(rum_##type##_left_distance); \
250251
Datum \
251-
rum_left_distance_##type(PG_FUNCTION_ARGS) \
252+
rum_##type##_left_distance(PG_FUNCTION_ARGS) \
252253
{ \
253254
Datum a = PG_GETARG_DATUM(0); \
254255
Datum b = PG_GETARG_DATUM(1); \
@@ -271,9 +272,9 @@ rum_left_distance_##type(PG_FUNCTION_ARGS) \
271272
\
272273
PG_RETURN_FLOAT8(diff); \
273274
} \
274-
PG_FUNCTION_INFO_V1(rum_right_distance_##type); \
275+
PG_FUNCTION_INFO_V1(rum_##type##_right_distance); \
275276
Datum \
276-
rum_right_distance_##type(PG_FUNCTION_ARGS) \
277+
rum_##type##_right_distance(PG_FUNCTION_ARGS) \
277278
{ \
278279
Datum a = PG_GETARG_DATUM(0); \
279280
Datum b = PG_GETARG_DATUM(1); \
@@ -296,27 +297,27 @@ rum_right_distance_##type(PG_FUNCTION_ARGS) \
296297
\
297298
PG_RETURN_FLOAT8(diff); \
298299
} \
299-
PG_FUNCTION_INFO_V1(rum_outer_distance_##type); \
300+
PG_FUNCTION_INFO_V1(rum_##type##_outer_distance); \
300301
Datum \
301-
rum_outer_distance_##type(PG_FUNCTION_ARGS) \
302+
rum_##type##_outer_distance(PG_FUNCTION_ARGS) \
302303
{ \
303304
StrategyNumber strategy = PG_GETARG_UINT16(2); \
304305
Datum diff; \
305306
\
306307
switch (strategy) \
307308
{ \
308309
case RUM_DISTANCE: \
309-
diff = DirectFunctionCall2(rum_distance_##type, \
310+
diff = DirectFunctionCall2(rum_##type##_distance, \
310311
PG_GETARG_DATUM(0), \
311312
PG_GETARG_DATUM(1)); \
312313
break; \
313314
case RUM_LEFT_DISTANCE: \
314-
diff = DirectFunctionCall2(rum_left_distance_##type, \
315+
diff = DirectFunctionCall2(rum_##type##_left_distance, \
315316
PG_GETARG_DATUM(0), \
316317
PG_GETARG_DATUM(1)); \
317318
break; \
318319
case RUM_RIGHT_DISTANCE: \
319-
diff = DirectFunctionCall2(rum_right_distance_##type, \
320+
diff = DirectFunctionCall2(rum_##type##_right_distance, \
320321
PG_GETARG_DATUM(0), \
321322
PG_GETARG_DATUM(1)); \
322323
break; \
@@ -613,3 +614,15 @@ leftmostvalue_numeric(void)
613614
}
614615

615616
RUM_SUPPORT(numeric, true, leftmostvalue_numeric, rum_numeric_cmp)
617+
618+
/* Compatibility with rum-1.0, but see gen_rum_sql--1.0--1.1.pl */
619+
PG_FUNCTION_INFO_V1(rum_timestamp_consistent);
620+
Datum
621+
rum_timestamp_consistent(PG_FUNCTION_ARGS)
622+
{
623+
bool *recheck = (bool *) PG_GETARG_POINTER(5);
624+
625+
*recheck = false;
626+
PG_RETURN_BOOL(true);
627+
}
628+

0 commit comments

Comments
 (0)