Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit34b2b70

Browse files
committed
1.0 -> 1.1 works for now
1 parent6bd1d00 commit34b2b70

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.plrenamed 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 FUNCTIONrum_extract_value_TYPEIDENT(TYPENAME, internal)
5+
CREATE FUNCTIONrum_TYPEIDENT_extract_value(TYPENAME, internal)
66
RETURNS internal
77
AS 'MODULE_PATHNAME'
88
LANGUAGE C STRICT IMMUTABLE;
99
10-
CREATE FUNCTIONrum_compare_prefix_TYPEIDENT(TYPENAME, TYPENAME, int2, internal)
10+
CREATE FUNCTIONrum_TYPEIDENT_compare_prefix(TYPENAME, TYPENAME, int2, internal)
1111
RETURNS int4
1212
AS 'MODULE_PATHNAME'
1313
LANGUAGE C STRICT IMMUTABLE;
1414
15-
CREATE FUNCTIONrum_extract_query_TYPEIDENT(TYPENAME, internal, int2, internal, internal)
15+
CREATE FUNCTIONrum_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 CLASSTYPEIDENT_ops
24+
CREATE OPERATOR CLASSrum_TYPEIDENT_ops
2525
DEFAULT FOR TYPE TYPENAME USING rum
2626
AS
2727
OPERATOR1 <(TYPECMPTYPE, TYPECMPTYPE),
@@ -30,10 +30,10 @@
3030
OPERATOR4 >=(TYPECMPTYPE, TYPECMPTYPE),
3131
OPERATOR5 >(TYPECMPTYPE, TYPECMPTYPE),
3232
FUNCTION1 TYPECMPFUNC(TYPECMPTYPE,TYPECMPTYPE),
33-
FUNCTION2rum_extract_value_TYPESUBIDENT(TYPESUBNAME, internal),
34-
FUNCTION3rum_extract_query_TYPESUBIDENT(TYPESUBNAME, internal, int2, internal, internal),
33+
FUNCTION2rum_TYPESUBIDENT_extract_value(TYPESUBNAME, internal),
34+
FUNCTION3rum_TYPESUBIDENT_extract_query(TYPESUBNAME, internal, int2, internal, internal),
3535
FUNCTION4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal),
36-
FUNCTION5rum_compare_prefix_TYPESUBIDENT(TYPESUBNAME,TYPESUBNAME,int2, internal),
36+
FUNCTION5rum_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
foreachmy$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-
CREATEFUNCTIONrum_distance_timestamp(timestamp,timestamp)
54+
CREATEFUNCTIONrum_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-
CREATEFUNCTIONrum_left_distance_timestamp(timestamp,timestamp)
66+
CREATEFUNCTIONrum_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-
CREATEFUNCTIONrum_right_distance_timestamp(timestamp,timestamp)
78+
CREATEFUNCTIONrum_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-
CREATEFUNCTIONrum_extract_value_timestamp(timestamp,internal,internal,internal,internal)
183+
CREATEFUNCTIONrum_timestamp_extract_value(timestamp,internal,internal,internal,internal)
184184
RETURNS internal
185185
AS'MODULE_PATHNAME'
186186
LANGUAGE C STRICT IMMUTABLE;
187187

188-
CREATEFUNCTIONrum_compare_prefix_timestamp(timestamp,timestamp,smallint,internal)
188+
CREATEFUNCTIONrum_timestamp_compare_prefix(timestamp,timestamp,smallint,internal)
189189
RETURNS int4
190190
AS'MODULE_PATHNAME'
191191
LANGUAGE C STRICT IMMUTABLE;
192192

193-
CREATEFUNCTIONrum_config_timestamp(internal)
193+
CREATEFUNCTIONrum_timestamp_config(internal)
194194
RETURNS void
195195
AS'MODULE_PATHNAME'
196196
LANGUAGE C IMMUTABLE STRICT;
197197

198-
CREATEFUNCTIONrum_extract_query_timestamp(timestamp,internal,smallint,internal,internal,internal,internal)
198+
CREATEFUNCTIONrum_timestamp_extract_query(timestamp,internal,smallint,internal,internal,internal,internal)
199199
RETURNS internal
200200
AS'MODULE_PATHNAME'
201201
LANGUAGE C STRICT IMMUTABLE;
202202

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

208-
CREATEFUNCTIONrum_outer_distance_timestamp(timestamp,timestamp,smallint)
208+
CREATEFUNCTIONrum_timestamp_outer_distance(timestamp,timestamp,smallint)
209209
RETURNS float8
210210
AS'MODULE_PATHNAME'
211211
LANGUAGE C STRICT IMMUTABLE;
@@ -220,13 +220,13 @@ AS
220220
OPERATOR5>,
221221
--support
222222
FUNCTION1 timestamp_cmp(timestamp,timestamp),
223-
FUNCTION2rum_extract_value_timestamp(timestamp,internal,internal,internal,internal),
224-
FUNCTION3rum_extract_query_timestamp(timestamp,internal,smallint,internal,internal,internal,internal),
225-
FUNCTION4rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal),
226-
FUNCTION5rum_compare_prefix_timestamp(timestamp,timestamp,smallint,internal),
227-
FUNCTION6rum_config_timestamp(internal),
223+
FUNCTION2rum_timestamp_extract_value(timestamp,internal,internal,internal,internal),
224+
FUNCTION3rum_timestamp_extract_query(timestamp,internal,smallint,internal,internal,internal,internal),
225+
FUNCTION4rum_timestamp_consistent(internal,smallint,timestamp,int,internal,internal,internal,internal),
226+
FUNCTION5rum_timestamp_compare_prefix(timestamp,timestamp,smallint,internal),
227+
FUNCTION6rum_timestamp_config(internal),
228228
-- support to timestamp disttance in rum_tsvector_timestamp_ops
229-
FUNCTION9rum_outer_distance_timestamp(timestamp,timestamp,smallint),
229+
FUNCTION9rum_timestamp_outer_distance(timestamp,timestamp,smallint),
230230
OPERATOR20<=> (timestamp,timestamp) FORORDER BYpg_catalog.float_ops,
231231
OPERATOR21<=| (timestamp,timestamp) FORORDER BYpg_catalog.float_ops,
232232
OPERATOR22 |=> (timestamp,timestamp) FORORDER BYpg_catalog.float_ops,
@@ -276,37 +276,37 @@ AS
276276
* rum_timestamptz_ops operator class
277277
*/
278278

279-
CREATEFUNCTIONrum_distance_timestamptz(timestamptz,timestamptz)
279+
CREATEFUNCTIONrum_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-
CREATEFUNCTIONrum_left_distance_timestamptz(timestamptz,timestamptz)
291+
CREATEFUNCTIONrum_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-
CREATEFUNCTIONrum_right_distance_timestamptz(timestamptz,timestamptz)
303+
CREATEFUNCTIONrum_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
OPERATOR5>,
323323
--support
324324
FUNCTION1 timestamptz_cmp(timestamptz,timestamptz),
325-
FUNCTION2rum_extract_value_timestamp(timestamp,internal,internal,internal,internal),
326-
FUNCTION3rum_extract_query_timestamp(timestamp,internal,smallint,internal,internal,internal,internal),
327-
FUNCTION4rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal),
328-
FUNCTION5rum_compare_prefix_timestamp(timestamp,timestamp,smallint,internal),
329-
FUNCTION6rum_config_timestamp(internal),
325+
FUNCTION2rum_timestamp_extract_value(timestamp,internal,internal,internal,internal),
326+
FUNCTION3rum_timestamp_extract_query(timestamp,internal,smallint,internal,internal,internal,internal),
327+
FUNCTION4rum_timestamp_consistent(internal,smallint,timestamp,int,internal,internal,internal,internal),
328+
FUNCTION5rum_timestamp_compare_prefix(timestamp,timestamp,smallint,internal),
329+
FUNCTION6rum_timestamp_config(internal),
330330
-- support to timestamptz distance in rum_tsvector_timestamptz_ops
331-
FUNCTION9rum_outer_distance_timestamp(timestamp,timestamp,smallint),
331+
FUNCTION9rum_timestamp_outer_distance(timestamp,timestamp,smallint),
332332
OPERATOR20<=> (timestamptz,timestamptz) FORORDER BYpg_catalog.float_ops,
333333
OPERATOR21<=| (timestamptz,timestamptz) FORORDER BYpg_catalog.float_ops,
334334
OPERATOR22 |=> (timestamptz,timestamptz) FORORDER BYpg_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
#defineRUM_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
#defineRUM_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
Datuma = PG_GETARG_DATUM(0);\
229230
Datumb = 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
Datuma = PG_GETARG_DATUM(0);\
254255
Datumb = 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
Datuma = PG_GETARG_DATUM(0);\
279280
Datumb = 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
StrategyNumberstrategy = PG_GETARG_UINT16(2);\
304305
Datumdiff;\
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)

[8]ページ先頭

©2009-2025 Movatter.jp