roaringbitmap

support for Roaring Bitmaps

Overview

PackageVersionCategoryLicenseLanguage
pg_roaringbitmap1.1.0TYPEApache-2.0C
IDExtensionBinLibLoadCreateTrustRelocSchema
3570roaringbitmapNoYesNoYesNoYes-
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

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-03-12: add pg extension catalog (95749bf)