roaringbitmap
support for Roaring Bitmaps
Repository
ChenHuajun/pg_roaringbitmap
https://github.com/ChenHuajun/pg_roaringbitmap
Source
pg_roaringbitmap-1.1.0.tar.gz
pg_roaringbitmap-1.1.0.tar.gz
Overview
| Package | Version | Category | License | Language |
|---|---|---|---|---|
pg_roaringbitmap | 1.1.0 | TYPE | Apache-2.0 | C |
| ID | Extension | Bin | Lib | Load | Create | Trust | Reloc | Schema |
|---|---|---|---|---|---|---|---|---|
| 3570 | roaringbitmap | No | Yes | No | Yes | No | Yes | - |
| Related | rum prefix semver unit pgpdf pglite_fusion md5hash asn1oid |
|---|---|
| Depended By | pgfaceting |
Version
| Type | Repo | Version | PG Ver | Package | Deps |
|---|---|---|---|---|---|
| EXT | PGDG | 1.1.0 | 1817161514 | pg_roaringbitmap | - |
| RPM | PGDG | 1.1.0 | 1817161514 | pg_roaringbitmap_$v | - |
| DEB | PGDG | 1.1.0 | 1817161514 | postgresql-$v-roaringbitmap | - |
| OS / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PIGSTY 1.1.0 | ||||
| el8.aarch64 | PIGSTY 1.1.0 | ||||
| el9.x86_64 | PIGSTY 1.1.0 | ||||
| el9.aarch64 | PIGSTY 1.1.0 | ||||
| el10.x86_64 | PIGSTY 1.1.0 | ||||
| el10.aarch64 | PIGSTY 1.1.0 | PIGSTY 1.1.0 | PIGSTY 1.1.0 | PIGSTY 1.1.0 | PIGSTY 1.1.0 |
| d12.x86_64 | PGDG 1.1.0 d12.x86_64.pg18 : postgresql-18-roaringbitmap postgresql-18-roaringbitmap_1.1.0-1.pgdg12+1_amd64.deb
| PGDG 1.1.0 d12.x86_64.pg17 : postgresql-17-roaringbitmap postgresql-17-roaringbitmap_1.1.0-1.pgdg12+1_amd64.deb
| PGDG 1.1.0 d12.x86_64.pg16 : postgresql-16-roaringbitmap postgresql-16-roaringbitmap_1.1.0-1.pgdg12+1_amd64.deb
| PGDG 1.1.0 d12.x86_64.pg15 : postgresql-15-roaringbitmap postgresql-15-roaringbitmap_1.1.0-1.pgdg12+1_amd64.deb
| PGDG 1.1.0 d12.x86_64.pg14 : postgresql-14-roaringbitmap postgresql-14-roaringbitmap_1.1.0-1.pgdg12+1_amd64.deb
|
| d12.aarch64 | PGDG 1.1.0 d12.aarch64.pg18 : postgresql-18-roaringbitmap postgresql-18-roaringbitmap_1.1.0-1.pgdg12+1_arm64.deb
| PGDG 1.1.0 d12.aarch64.pg17 : postgresql-17-roaringbitmap postgresql-17-roaringbitmap_1.1.0-1.pgdg12+1_arm64.deb
| PGDG 1.1.0 d12.aarch64.pg16 : postgresql-16-roaringbitmap postgresql-16-roaringbitmap_1.1.0-1.pgdg12+1_arm64.deb
| PGDG 1.1.0 d12.aarch64.pg15 : postgresql-15-roaringbitmap postgresql-15-roaringbitmap_1.1.0-1.pgdg12+1_arm64.deb
| PGDG 1.1.0 d12.aarch64.pg14 : postgresql-14-roaringbitmap postgresql-14-roaringbitmap_1.1.0-1.pgdg12+1_arm64.deb
|
| d13.x86_64 | PGDG 1.1.0 d13.x86_64.pg18 : postgresql-18-roaringbitmap postgresql-18-roaringbitmap_1.1.0-1.pgdg13+1_amd64.deb
| PGDG 1.1.0 d13.x86_64.pg17 : postgresql-17-roaringbitmap postgresql-17-roaringbitmap_1.1.0-1.pgdg13+1_amd64.deb
| PGDG 1.1.0 d13.x86_64.pg16 : postgresql-16-roaringbitmap postgresql-16-roaringbitmap_1.1.0-1.pgdg13+1_amd64.deb
| PGDG 1.1.0 d13.x86_64.pg15 : postgresql-15-roaringbitmap postgresql-15-roaringbitmap_1.1.0-1.pgdg13+1_amd64.deb
| PGDG 1.1.0 d13.x86_64.pg14 : postgresql-14-roaringbitmap postgresql-14-roaringbitmap_1.1.0-1.pgdg13+1_amd64.deb
|
| d13.aarch64 | PGDG 1.1.0 d13.aarch64.pg18 : postgresql-18-roaringbitmap postgresql-18-roaringbitmap_1.1.0-1.pgdg13+1_arm64.deb
| PGDG 1.1.0 d13.aarch64.pg17 : postgresql-17-roaringbitmap postgresql-17-roaringbitmap_1.1.0-1.pgdg13+1_arm64.deb
| PGDG 1.1.0 d13.aarch64.pg16 : postgresql-16-roaringbitmap postgresql-16-roaringbitmap_1.1.0-1.pgdg13+1_arm64.deb
| PGDG 1.1.0 d13.aarch64.pg15 : postgresql-15-roaringbitmap postgresql-15-roaringbitmap_1.1.0-1.pgdg13+1_arm64.deb
| PGDG 1.1.0 d13.aarch64.pg14 : postgresql-14-roaringbitmap postgresql-14-roaringbitmap_1.1.0-1.pgdg13+1_arm64.deb
|
| u22.x86_64 | PGDG 1.1.0 u22.x86_64.pg18 : postgresql-18-roaringbitmap postgresql-18-roaringbitmap_1.1.0-1.pgdg22.04+1_amd64.deb
| PGDG 1.1.0 u22.x86_64.pg17 : postgresql-17-roaringbitmap postgresql-17-roaringbitmap_1.1.0-1.pgdg22.04+1_amd64.deb
| PGDG 1.1.0 u22.x86_64.pg16 : postgresql-16-roaringbitmap postgresql-16-roaringbitmap_1.1.0-1.pgdg22.04+1_amd64.deb
| PGDG 1.1.0 u22.x86_64.pg15 : postgresql-15-roaringbitmap postgresql-15-roaringbitmap_1.1.0-1.pgdg22.04+1_amd64.deb
| PGDG 1.1.0 u22.x86_64.pg14 : postgresql-14-roaringbitmap postgresql-14-roaringbitmap_1.1.0-1.pgdg22.04+1_amd64.deb
|
| u22.aarch64 | PGDG 1.1.0 u22.aarch64.pg18 : postgresql-18-roaringbitmap postgresql-18-roaringbitmap_1.1.0-1.pgdg22.04+1_arm64.deb
| PGDG 1.1.0 u22.aarch64.pg17 : postgresql-17-roaringbitmap postgresql-17-roaringbitmap_1.1.0-1.pgdg22.04+1_arm64.deb
| PGDG 1.1.0 u22.aarch64.pg16 : postgresql-16-roaringbitmap postgresql-16-roaringbitmap_1.1.0-1.pgdg22.04+1_arm64.deb
| PGDG 1.1.0 u22.aarch64.pg15 : postgresql-15-roaringbitmap postgresql-15-roaringbitmap_1.1.0-1.pgdg22.04+1_arm64.deb
| PGDG 1.1.0 u22.aarch64.pg14 : postgresql-14-roaringbitmap postgresql-14-roaringbitmap_1.1.0-1.pgdg22.04+1_arm64.deb
|
| u24.x86_64 | PGDG 1.1.0 u24.x86_64.pg18 : postgresql-18-roaringbitmap postgresql-18-roaringbitmap_1.1.0-1.pgdg24.04+1_amd64.deb
| PGDG 1.1.0 u24.x86_64.pg17 : postgresql-17-roaringbitmap postgresql-17-roaringbitmap_1.1.0-1.pgdg24.04+1_amd64.deb
| PGDG 1.1.0 u24.x86_64.pg16 : postgresql-16-roaringbitmap postgresql-16-roaringbitmap_1.1.0-1.pgdg24.04+1_amd64.deb
| PGDG 1.1.0 u24.x86_64.pg15 : postgresql-15-roaringbitmap postgresql-15-roaringbitmap_1.1.0-1.pgdg24.04+1_amd64.deb
| PGDG 1.1.0 u24.x86_64.pg14 : postgresql-14-roaringbitmap postgresql-14-roaringbitmap_1.1.0-1.pgdg24.04+1_amd64.deb
|
| u24.aarch64 | PGDG 1.1.0 u24.aarch64.pg18 : postgresql-18-roaringbitmap postgresql-18-roaringbitmap_1.1.0-1.pgdg24.04+1_arm64.deb
| PGDG 1.1.0 u24.aarch64.pg17 : postgresql-17-roaringbitmap postgresql-17-roaringbitmap_1.1.0-1.pgdg24.04+1_arm64.deb
| PGDG 1.1.0 u24.aarch64.pg16 : postgresql-16-roaringbitmap postgresql-16-roaringbitmap_1.1.0-1.pgdg24.04+1_arm64.deb
| PGDG 1.1.0 u24.aarch64.pg15 : postgresql-15-roaringbitmap postgresql-15-roaringbitmap_1.1.0-1.pgdg24.04+1_arm64.deb
| PGDG 1.1.0 u24.aarch64.pg14 : postgresql-14-roaringbitmap postgresql-14-roaringbitmap_1.1.0-1.pgdg24.04+1_arm64.deb
|
Build
You can build the RPM packages for pg_roaringbitmap using pig build:
pig build pkg pg_roaringbitmap # build RPM packages
Install
You can install pg_roaringbitmap directly. First, make sure the PGDG repository is added and enabled:
pig repo add pgdg -u # Add PGDG repo and update cache
Install the extension using pig or apt/yum/dnf:
pig install pg_roaringbitmap; # Install for current active PG version
pig ext install -y pg_roaringbitmap -v 18 # PG 18
pig ext install -y pg_roaringbitmap -v 17 # PG 17
pig ext install -y pg_roaringbitmap -v 16 # PG 16
pig ext install -y pg_roaringbitmap -v 15 # PG 15
pig ext install -y pg_roaringbitmap -v 14 # PG 14
dnf install -y pg_roaringbitmap_18 # PG 18
dnf install -y pg_roaringbitmap_17 # PG 17
dnf install -y pg_roaringbitmap_16 # PG 16
dnf install -y pg_roaringbitmap_15 # PG 15
dnf install -y pg_roaringbitmap_14 # PG 14
apt install -y postgresql-18-roaringbitmap # PG 18
apt install -y postgresql-17-roaringbitmap # PG 17
apt install -y postgresql-16-roaringbitmap # PG 16
apt install -y postgresql-15-roaringbitmap # PG 15
apt install -y postgresql-14-roaringbitmap # PG 14
Create Extension:
CREATE EXTENSION roaringbitmap;
Usage
The roaringbitmap extension provides compressed bitmap data types for efficient set operations on integer collections.
CREATE EXTENSION roaringbitmap;
SET roaringbitmap.output_format = 'array';
SELECT rb_build('{1,2,3,4,5}'::int[]); -- {1,2,3,4,5}
Data Types
roaringbitmap: 32-bit bitmap, range [0, 4294967296)roaringbitmap64: 64-bit bitmap, range [0, 18446744073709551615)
Output format controlled by: SET roaringbitmap.output_format = 'array' or 'bytea'
Operators
| Operator | Description |
|---|---|
| | Bitwise OR (union) |
& | Bitwise AND (intersection) |
# | Bitwise XOR |
- | Difference (ANDNOT) |
| (with int) | Add element |
- (with int) | Remove element |
@> | Contains |
<@ | Is contained by |
&& | Overlap |
=, <> | Equality/inequality |
Core Functions
-- Construction
SELECT rb_build(ARRAY[1,2,3,4,5]);
-- Analysis
SELECT rb_cardinality(rb_build('{1,2,3}'::int[])); -- 3
SELECT rb_to_array(rb_build('{1,2,3}'::int[])); -- {1,2,3}
SELECT rb_iterate(rb_build('{1,2,3}'::int[])); -- returns set
-- Set operation cardinalities
SELECT rb_and_cardinality(a, b);
SELECT rb_or_cardinality(a, b);
SELECT rb_xor_cardinality(a, b);
SELECT rb_andnot_cardinality(a, b);
-- Range operations
SELECT rb_range(bitmap, 2, 5); -- extract range [2, 5)
SELECT rb_fill(bitmap, 0, 10); -- add range [0, 10)
SELECT rb_clear(bitmap, 3, 7); -- remove range [3, 7)
SELECT rb_flip(bitmap, 0, 10); -- toggle range [0, 10)
-- Element access
SELECT rb_min(bitmap); -- minimum element
SELECT rb_max(bitmap); -- maximum element
SELECT rb_rank(bitmap, 5); -- count elements <= 5
SELECT rb_index(bitmap, 3); -- 0-based position of element
-- Utilities
SELECT rb_is_empty(bitmap);
SELECT rb_jaccard_dist(a, b); -- Jaccard similarity
Aggregate Functions
SELECT rb_build_agg(id) FROM table; -- build from rows
SELECT rb_or_agg(bitmap) FROM table; -- union all bitmaps
SELECT rb_and_agg(bitmap) FROM table; -- intersect all bitmaps
SELECT rb_xor_agg(bitmap) FROM table; -- XOR all bitmaps
64-bit equivalents use the rb64_ prefix.
Feedback
Was this page helpful?
Thanks for the feedback! Please let us know how we can improve.
Sorry to hear that. Please let us know how we can improve.