roaringbitmap

support for Roaring Bitmaps

Overview

PackageVersionCategoryLicenseLanguage
pg_roaringbitmap1.1.0TYPEApache-2.0C
IDExtensionBinLibLoadCreateTrustRelocSchema
3630roaringbitmapNoYesNoYesNoYes-
Relatedrum prefix semver unit pgpdf pglite_fusion md5hash asn1oid
Depended Bypgfaceting

Version

TypeRepoVersionPG VerPackageDeps
EXTPGDG1.1.01817161514pg_roaringbitmap-
RPMPGDG1.1.01817161514pg_roaringbitmap_$v-
DEBPGDG1.1.01817161514postgresql-$v-roaringbitmap-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
d12.aarch64
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
d13.x86_64
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
d13.aarch64
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
u22.x86_64
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
u22.aarch64
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
u24.x86_64
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
u24.aarch64
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
PGDG 1.1.0
u26.x86_64
u26.aarch64

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

roaringbitmap: compressed bitmap data type for PostgreSQL

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

OperatorDescription
|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.


Last Modified 2026-05-01: update extension data (aaef844)