Skip to content

Commit 799d248

Browse files
committed
misc
1 parent 953f2b8 commit 799d248

File tree

3 files changed

+46
-9
lines changed

3 files changed

+46
-9
lines changed

README.md

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,15 @@ SELECT '\x3a3000000100000000000000100000000100'::ROARINGBITMAP;
8585
</td>
8686
<td>rb_build('{1,2,3,4,5}')</td>
8787
</tr>
88+
<tr>
89+
<td>rb_build</td>
90+
<td>integer<br>integer<br>integer</td>
91+
<td>roaringbitmap</td>
92+
<td>
93+
Build a roaringbitmap from integer range (with step).
94+
</td>
95+
<td>rb_build('{1,2,3,4,5}')</td>
96+
</tr>
8897
<tr>
8998
<td>rb_to_array</td>
9099
<td>roaringbitmap</td>
@@ -125,35 +134,56 @@ SELECT '\x3a3000000100000000000000100000000100'::ROARINGBITMAP;
125134
<tr>
126135
<td>rb_cardinality</td>
127136
<td>roraingbitmap</td>
128-
<td>integer</td>
137+
<td>bigint</td>
129138
<td>Retrun roaringbitmap cardinality.<br>统计基数</td>
130139
<td>rb_cardinality(rb_build('{1,2,3,4,5}'))</td>
131140
</tr>
141+
<tr>
142+
<td>rb_cardinality</td>
143+
<td>roraingbitmap<br>integer<br>integer</td>
144+
<td>bigint</td>
145+
<td>Retrun roaringbitmap cardinality between integer range.</td>
146+
<td>rb_cardinality(rb_build('{1,2,3,4,5}'),1,4)</td>
147+
</tr>
148+
<tr>
149+
<td>rb_cardinality</td>
150+
<td>roraingbitmap<br>integer<br>integer<br>integer</td>
151+
<td>bigint</td>
152+
<td>Retrun roaringbitmap cardinality between integer range with step.</td>
153+
<td>rb_cardinality(rb_build('{1,2,3,4,5}'),1,4,2)</td>
154+
</tr>
155+
<tr>
156+
<td>rb_cardinality</td>
157+
<td>roraingbitmap<br>integer<br>integer<br>integer<br>integer[]</td>
158+
<td>bigint</td>
159+
<td>Retrun roaringbitmap cardinality between integer range with step, in offset array.</td>
160+
<td>rb_cardinality(rb_build('{1,2,3,4,5}'),1,4,2,'{1,3}')</td>
161+
</tr>
132162
<tr>
133163
<td>rb_and_cardinality</td>
134164
<td>roraingbitmap<br>roaringbitmap</td>
135-
<td>integer</td>
165+
<td>bigint</td>
136166
<td>Two roaringbitmap and calculation, return cardinality.<br>And计算并返回基数。</td>
137167
<td>rb_and_cardinality(rb_build('{1,2,3}'),rb_build('{3,4,5}'))</td>
138168
</tr>
139169
<tr>
140170
<td>rb_or_cardinality</td>
141171
<td>roraingbitmap<br>roaringbitmap</td>
142-
<td>integer</td>
172+
<td>bigint</td>
143173
<td>Two roaringbitmap or calculation, return cardinality.<br>Or计算并返回基数。</td>
144174
<td>rb_or_cardinality(rb_build('{1,2,3}'),rb_build('{3,4,5}'))</td>
145175
</tr>
146176
<tr>
147177
<td>rb_xor_cardinality</td>
148178
<td>roraingbitmap<br>roaringbitmap</td>
149-
<td>integer</td>
179+
<td>bigint</td>
150180
<td>Two roaringbitmap xor calculation, return cardinality.<br>Xor计算并返回基数。</td>
151181
<td>rb_xor_cardinality(rb_build('{1,2,3}'),rb_build('{3,4,5}'))</td>
152182
</tr>
153183
<tr>
154184
<td>rb_andnot_cardinality</td>
155185
<td>roraingbitmap<br>roaringbitmap</td>
156-
<td>integer</td>
186+
<td>bigint</td>
157187
<td>Two roaringbitmap andnot calculation, return cardinality.<br>AndNot计算并返回基数。</td>
158188
<td>rb_andnot_cardinality(rb_build('{1,2,3}'),rb_build('{3,4,5}'))</td>
159189
</tr>
@@ -470,21 +500,21 @@ SELECT '\x3a3000000100000000000000100000000100'::ROARINGBITMAP;
470500
<tr>
471501
<td>rb_or_cardinality_agg</td>
472502
<td>roraingbitmap</td>
473-
<td>integer</td>
503+
<td>bigint</td>
474504
<td>Or Aggregate calculations from a roraingbitmap set, return cardinality.<br>Or 聚合计算并返回其基数。</td>
475505
<td>rb_or_cardinality_agg(rb_build('{1,2,3}'))</td>
476506
</tr>
477507
<tr>
478508
<td>rb_and_cardinality_agg</td>
479509
<td>roraingbitmap</td>
480-
<td>integer</td>
510+
<td>bigint</td>
481511
<td>And Aggregate calculations from a roraingbitmap set, return cardinality.<br>And 聚合计算并返回其基数。</td>
482512
<td>rb_and_cardinality_agg(rb_build('{1,2,3}'))</td>
483513
</tr>
484514
<tr>
485515
<td>rb_xor_cardinality_agg</td>
486516
<td>roraingbitmap</td>
487-
<td>integer</td>
517+
<td>bigint</td>
488518
<td>Xor Aggregate calculations from a roraingbitmap set, return cardinality.<br>Xor 聚合计算并返回其基数。</td>
489519
<td>rb_xor_cardinality_agg(rb_build('{1,2,3}'))</td>
490520
</tr>

roaringbitmap--0.2.65.1--0.2.65.2.sql

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,33 +13,40 @@ CREATE
1313
CREATE
1414
OR REPLACE FUNCTION rb_or(roaringbitmap, roaringbitmap) RETURNS roaringbitmap AS 'MODULE_PATHNAME',
1515
'rb_or' LANGUAGE C STRICT IMMUTABLE;
16+
DROP FUNCTION IF EXISTS rb_or_cardinality(roaringbitmap, roaringbitmap);
1617
CREATE
1718
OR REPLACE FUNCTION rb_or_cardinality(roaringbitmap, roaringbitmap) RETURNS BIGINT AS 'MODULE_PATHNAME',
1819
'rb_or_cardinality' LANGUAGE C STRICT IMMUTABLE;
1920
CREATE
2021
OR REPLACE FUNCTION rb_and(roaringbitmap, roaringbitmap) RETURNS roaringbitmap AS 'MODULE_PATHNAME',
2122
'rb_and' LANGUAGE C STRICT IMMUTABLE;
23+
DROP FUNCTION IF EXISTS rb_and_cardinality(roaringbitmap, roaringbitmap);
2224
CREATE
2325
OR REPLACE FUNCTION rb_and_cardinality(roaringbitmap, roaringbitmap) RETURNS BIGINT AS 'MODULE_PATHNAME',
2426
'rb_and_cardinality' LANGUAGE C STRICT IMMUTABLE;
2527
CREATE
2628
OR REPLACE FUNCTION rb_xor(roaringbitmap, roaringbitmap) RETURNS roaringbitmap AS 'MODULE_PATHNAME',
2729
'rb_xor' LANGUAGE C STRICT IMMUTABLE;
30+
DROP FUNCTION IF EXISTS rb_xor_cardinality(roaringbitmap, roaringbitmap);
2831
CREATE
2932
OR REPLACE FUNCTION rb_xor_cardinality(roaringbitmap, roaringbitmap) RETURNS BIGINT AS 'MODULE_PATHNAME',
3033
'rb_xor_cardinality' LANGUAGE C STRICT IMMUTABLE;
3134
CREATE
3235
OR REPLACE FUNCTION rb_andnot(roaringbitmap, roaringbitmap) RETURNS roaringbitmap AS 'MODULE_PATHNAME',
3336
'rb_andnot' LANGUAGE C STRICT IMMUTABLE;
37+
DROP FUNCTION IF EXISTS rb_andnot_cardinality(roaringbitmap, roaringbitmap);
3438
CREATE
3539
OR REPLACE FUNCTION rb_andnot_cardinality(roaringbitmap, roaringbitmap) RETURNS BIGINT AS 'MODULE_PATHNAME',
3640
'rb_andnot_cardinality' LANGUAGE C STRICT IMMUTABLE;
41+
DROP FUNCTION IF EXISTS rb_cardinality(roaringbitmap);
3742
CREATE
3843
OR REPLACE FUNCTION rb_cardinality(roaringbitmap) RETURNS BIGINT AS 'MODULE_PATHNAME',
3944
'rb_cardinality' LANGUAGE C STRICT IMMUTABLE;
45+
DROP FUNCTION IF EXISTS rb_cardinality(roaringbitmap, integer, integer);
4046
CREATE
4147
OR REPLACE FUNCTION rb_cardinality(roaringbitmap, integer, integer) RETURNS BIGINT AS 'MODULE_PATHNAME',
4248
'rb_cardinality_range' LANGUAGE C STRICT IMMUTABLE;
49+
DROP FUNCTION IF EXISTS rb_cardinality(roaringbitmap, integer, integer, integer);
4350
CREATE
4451
OR REPLACE FUNCTION rb_cardinality(roaringbitmap, integer, integer, integer) RETURNS BIGINT AS 'MODULE_PATHNAME',
4552
'rb_cardinality_step' LANGUAGE C STRICT IMMUTABLE;

roaringbitmap.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ Datum
361361
if (!r1)
362362
ereport(ERROR, (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), errmsg("bitmap format is error")));
363363

364-
int64 card1 = roaring_bitmap_range_cardinality(r1, min, max + 1);
364+
int64 card1 = roaring_bitmap_range_cardinality(r1, min, max == -1 ? -1 : max + 1);
365365

366366
roaring_bitmap_free(r1);
367367
PG_RETURN_INT64(card1);

0 commit comments

Comments
 (0)