Skip to content

About

Container images for community PostgreSQL extensions to be used as pluggable image volumes with CloudNativePG

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

 
 

Latest commit

 

History

389 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CNPG Extensions

CNPG Extensions - PostgreSQL Extension Container Images

This repository provides maintenance scripts for building immutable container images containing PostgreSQL extensions that cannot be accepted into the upstream cloudnative-pg/postgres-extensions-containers project due to licensing constraints, but are otherwise fully compatible with CloudNativePG.

Documentation


Requirements


Supported Extensions

Extension Description Project URL Maintained by License blocker
age Apache AGE graph database extension (Cypher queries) github.com/apache/age @ardentperf libcsv (LGPL-2.1+)
asn1oid ASN.1 object identifiers as a native PostgreSQL type github.com/df7cb/pgsql-asn1oid @ardentperf GPL-3.0-or-later
credcheck PostgreSQL username and password checks github.com/MigOpsRepos/credcheck @ardentperf MIT
db2fce DB2-compatible SQL functions and types github.com/credativ/db2fce @ardentperf PostgreSQL
debversion Debian package version comparison type salsa.debian.org/postgresql/postgresql-debversion @ardentperf GPL-3+
decoderbufs Logical decoding output serialized as Protocol Buffers github.com/debezium/postgres-decoderbufs @ardentperf MIT
extra-window-functions Window functions including lag and lead that ignore nulls github.com/xocolatl/extra_window_functions @ardentperf PostgreSQL
first-last-agg first() and last() ordered aggregates github.com/wulczer/first_last_agg @ardentperf PostgreSQL
h3 Uber H3 hexagonal geospatial indexing github.com/zachasme/h3-pg @ardentperf libh3-1 (Apache-2.0 + AGPL-3+ test deps)
hll HyperLogLog types and aggregates for approximate distinct counts github.com/citusdata/postgresql-hll @ardentperf Apache-2.0
http HTTP client functions callable from SQL github.com/pramsey/pgsql-http @ardentperf MIT
hypopg Hypothetical index support github.com/HypoPG/hypopg @ardentperf PostgreSQL License
icu-ext ICU text transformation, comparison, collation, and Unicode functions github.com/dverite/icu_ext @ardentperf LicenseRef-verite
ip4r IPv4 and IPv6 address and range types with operators and indexing github.com/RhodiumToad/ip4r @ardentperf PostgreSQL
jsquery jsquery language and GIN indexing for jsonb searches github.com/postgrespro/jsquery @ardentperf PostgreSQL
mimeo Per-table replication using snapshot, incremental, and DML-based methods pgxn.org/dist/mimeo/1.5.1/doc/mimeo.html @ardentperf PostgreSQL
mobilitydb Spatio-temporal moving objects database mobilitydb.com @ardentperf GPL-2+, GPL-3+
mysql-fdw MySQL/MariaDB foreign data wrapper github.com/EnterpriseDB/mysql_fdw @ardentperf libmariadb3 (LGPL-2.1)
numeral Compact numeral type with arithmetic, comparison, and bitwise operators github.com/df7cb/postgresql-numeral @ardentperf GPL-2.0-or-later
ogr-fdw Foreign data wrapper for GDAL/OGR vector data sources github.com/pramsey/pgsql-ogr-fdw @ardentperf MIT
orafce Oracle-compatible SQL functions and packages, including NVL github.com/orafce/orafce @ardentperf 0BSD, GPL-3.0-or-later WITH Bison-exception-2.2
periods SQL periods and system versioning for PostgreSQL github.com/xocolatl/periods @ardentperf PostgreSQL
pg-background Run SQL in background workers and return completion metadata github.com/vibhorkum/pg_background @ardentperf PostgreSQL
pg-cron Cron-based job scheduler for PostgreSQL github.com/citusdata/pg_cron @ardentperf Vixie-Cron (src/entry.c, src/misc.c)
pg-csv Flexible CSV processing functions for PostgreSQL github.com/PostgREST/pg_csv @ardentperf MIT
pg-dirtyread Read dead, unvacuumed tuples from a PostgreSQL relation github.com/df7cb/pg_dirtyread @ardentperf BSD-3-Clause
pg-gvm Greenbone helper functions for host matching, regular expressions, and schedules github.com/greenbone/pg-gvm @ardentperf GPL-3.0-or-later, AGPL-3.0-or-later
pg-hint-plan Query optimizer hints in SQL comments github.com/ossc-db/pg_hint_plan @ardentperf NTT
pg-partman Time- and ID-based partition management github.com/pgpartman/pg_partman @ardentperf PostgreSQL License
pg-permissions Inspect permissions in a PostgreSQL database github.com/cybertec-postgresql/pg_permissions @ardentperf PostgreSQL
pg-pwhash Adaptive Argon2, scrypt, and yescrypt password-hashing functions github.com/cybertec-postgresql/pg_pwhash @ardentperf MIT
pg-qualstats Predicate and missing-index statistics github.com/powa-team/pg_qualstats @ardentperf PostgreSQL License
pg-rage-terminator Terminate random sessions for chaos testing github.com/disco-stu/pg_rage_terminator @ardentperf PostgreSQL
pg-repack Rebuild tables and indexes while allowing normal reads and writes github.com/reorg/pg_repack @ardentperf BSD-3-Clause
pg-rewrite Rewrite PostgreSQL tables with less locking github.com/cybertec-postgresql/pg_rewrite @ardentperf PostgreSQL
pg-rrule iCalendar RRULE recurrence rule type github.com/petropavel13/pg_rrule @ardentperf libical3 (LGPL-2.1/MPL-2.0)
pg-similarity Similarity functions for PostgreSQL github.com/eulerto/pg_similarity @ardentperf BSD-3-Clause
pg-squeeze Online table bloat cleanup (pg_squeeze) github.com/cybertec-postgresql/pg_squeeze @ardentperf PostgreSQL License
pg-stat-kcache Per-query kernel and filesystem statistics github.com/powa-team/pg_stat_kcache @ardentperf PostgreSQL License
pg-stat-log Cumulative server-log message counts grouped by backend and message attributes github.com/fabriziomello/pg_stat_log @ardentperf PostgreSQL
pg-stat-plans Per-plan execution statistics and EXPLAIN texts github.com/pganalyze/pg_stat_plans @ardentperf Duboce/PostgreSQL-style license
pg-statviz Capture PostgreSQL statistics in tables for later SQL analysis github.com/vyruss/pg_statviz @ardentperf PostgreSQL
pg-track-settings Track PostgreSQL configuration settings powa.readthedocs.io @ardentperf PostgreSQL
pg-uuidv7 UUID version 7 (time-sortable) generator github.com/fboulnois/pg_uuidv7 @ardentperf MPL-2.0
pg-wait-sampling Sample wait events and expose historical and aggregated profiles github.com/postgrespro/pg_wait_sampling @ardentperf PostgreSQL
pgextwlist PostgreSQL extension whitelisting github.com/dimitri/pgextwlist @ardentperf PostgreSQL
pgfincore PostgreSQL functions to manage relation blocks in memory villemain.org/projects/pgfincore @ardentperf BSD-3-Clause
pglogical Logical replication over PostgreSQL connections github.com/2ndQuadrant/pglogical @ardentperf PostgreSQL
pgmemcache Memcached client interface for PostgreSQL github.com/ohmu/pgmemcache @ardentperf libmemcached11 (LGPL)
pgmp GMP arbitrary-precision arithmetic types github.com/dvarrazzo/pgmp @ardentperf LGPL-3+
pgnodemx Capture operating-system metrics from PostgreSQL github.com/pgnodemx/pgnodemx @ardentperf PostgreSQL, Apache-2.0
pgpcre PCRE2-backed regular-expression type and capture functions github.com/petere/pgpcre @ardentperf PostgreSQL
pgq Transactional, lockless event queue with SQL and PostgreSQL C helpers github.com/pgq/pgq @ardentperf ISC
pgsentinel Active session history sampler github.com/pgsentinel/pgsentinel @ardentperf PgSentinel PostgreSQL-style license
pgsphere Spherical geometry for astronomical data pgsphere.github.io @ardentperf GPL-3+
pgtap Unit testing framework for PostgreSQL pgtap.org @ardentperf PostgreSQL
pgtt Global temporary tables for PostgreSQL github.com/darold/pgtt @ardentperf ISC
pldebugger PL/pgSQL interactive debugger (pldbgapi) github.com/EnterpriseDB/pldebugger @ardentperf Artistic-2.0
pljs Trusted JavaScript procedural language backed by QuickJS github.com/plv8/pljs @ardentperf LicenseRef-PLJS
pllua Trusted and untrusted PL/Lua languages with optional hstore transform pllua.github.io/pllua @ardentperf MIT
plprofiler PL/pgSQL execution profiler github.com/bigsql/plprofiler @ardentperf Artistic-2.0
plpgsql-check PL/pgSQL linter and static checker github.com/okbob/plpgsql_check @ardentperf MIT
plproxy Database partitioning system for PostgreSQL plproxy.github.io @ardentperf ISC
plsh PL/sh procedural language for PostgreSQL github.com/petere/plsh @ardentperf PostgreSQL
pltcl Tcl procedural language for PostgreSQL www.postgresql.org/docs/18/pltcl.html @ardentperf PostgreSQL, TCL
pointcloud Types and functions for storing and querying LiDAR point-cloud data github.com/pgpointcloud/pointcloud @ardentperf BSD-3-Clause
powa Workload Analyzer history and snapshot schema powa.readthedocs.io/en/stable @ardentperf PostgreSQL
prefix Prefix ranges for text lookup and indexing github.com/dimitri/prefix @ardentperf BSD-2-Clause
preprepare Pre-prepare PostgreSQL statements on the server side github.com/dimitri/preprepare @ardentperf PostgreSQL
prioritize Get and set the nice priorities of PostgreSQL backends pgxn.org/dist/prioritize @ardentperf PostgreSQL
q3c Quad Tree Cube sky survey spatial indexing github.com/segasai/q3c @ardentperf GPL-2+
rational Exact integer-fraction arithmetic for PostgreSQL github.com/begriffs/pg_rational @ardentperf MIT
rdkit Cheminformatics types and functions for PostgreSQL github.com/rdkit/rdkit @ardentperf BSD-3-Clause
roaringbitmap Compressed Roaring bitmap data structures and set operations github.com/ChenHuajun/pg_roaringbitmap @ardentperf Apache-2.0
rum RUM index access method for full-text search and ordering github.com/postgrespro/rum @ardentperf PostgreSQL
semver Semantic-version data type with comparison and ordering operators pgxn.org/dist/semver/doc/semver.html @ardentperf PostgreSQL
set-user PostgreSQL privilege escalation with enhanced logging and control github.com/pgaudit/set_user @ardentperf PostgreSQL
show-plans Query plans for currently running statements github.com/cybertec-postgresql/pg_show_plans @ardentperf Cybertec PostgreSQL-style license
table-log Log table changes and restore tables to a point in time github.com/df7cb/table_log @ardentperf LicenseRef-table-log
tdigest t-digest aggregates for approximate quantile and percentile calculations github.com/tvondra/tdigest @ardentperf PostgreSQL
tds-fdw Microsoft SQL Server / Sybase foreign data wrapper github.com/tds-fdw/tds_fdw @ardentperf libsybdb5/FreeTDS (LGPL-2+)
timestamp9 Timestamp type with nanosecond precision github.com/optiver/timestamp9 @ardentperf MIT
unit SI unit values, conversions, and arithmetic github.com/df7cb/postgresql-unit @ardentperf GPL-3.0-or-later

Extensions in this repository are not accepted upstream solely due to licensing — they are otherwise fully functional and meet all other upstream quality requirements.


Relationship to Upstream

This repository tracks the upstream cloudnative-pg/postgres-extensions-containers build infrastructure as closely as possible. The only intentional differences are:

  • Extensions present upstream are removed here (they are maintained there).
  • Extensions blocked upstream by licensing are added here.

This keeps merging upstream infrastructure improvements straightforward.


Contribution and Maintenance Policy

Contributors are welcome to propose and maintain additional extensions.

Governance and Compliance

The project adheres to the following frameworks:

  • Governance Model: complies with the CloudNativePG (CNPG) Governance Model, as defined in GOVERNANCE.md.
  • Code of Conduct: follows the CNCF Code of Conduct, as defined in CODE_OF_CONDUCT.md.

Extension Requirements

When proposing a new extension, the following criteria must be met:

  • Licensing: The extension must have been declined by the upstream cloudnative-pg project solely due to a license not on the CNCF Allowlist. All other upstream quality requirements still apply.
  • Structure: only one extension can be included within an extension folder.
  • Debian Packages: Extension images must be built exclusively from Debian packages in the main component (which by definition complies with the DFSG), sourced from a trusted, auditable repository. The PostgreSQL Global Development Group (PGDG) is the recommended source, but other Debian repositories are acceptable provided they meet the same standards.
  • License inclusion: all necessary license agreements for the extension and its dependencies must be included within the extension folder.

See Adding a New Extension for the full workflow on proposing and submitting a new extension.

Automated Dependency Updates

Renovate automatically merges eligible minor, patch, and digest updates once required checks pass. Major updates and packages without a verified SQL version mapping require manual review. Packages containing independently versioned SQL extensions also require manual review. The Automerge gate checks extension updates for prerelease version markers, with an exception for AGE's release naming.

Submission Process

  1. Request and commitment: Open a new issue requesting the extension. The contributor(s) must agree to become "component owners" and maintainers for that extension.
  2. Approval: Maintainers review the proposal and either approve it or request changes.
  3. Submission: Component owner(s) open a Pull Request (PR) to introduce the new extension. The PR must include an entry in the CODEOWNERS file adding the component owner(s) for the new extension folder. The PR is reviewed, approved, and merged.
  4. Naming: The name of the extension is the registry name.

Removal Policy

If component owners decide to stop maintaining their extension, and no other contributors are found, the main project maintainers reserve the right to unconditionally remove that extension.


Naming & Tagging Convention

Each extension image tag follows this format:

<extension-name>:<ext_version>-<timestamp>-<pg_version>-<distro>

Example: Building pg_cron version 1.6.7 on PostgreSQL 18.0 for the trixie distro, with build timestamp 202509101200, results in:

pg-cron:1.6.7-202509101200-18-trixie

For convenience, rolling tags should also be published:

pg-cron:1.6.7-18-trixie
pg-cron:1.6.7-18-trixie

This scheme ensures:

  • Alignment with the upstream postgres-containers base images
  • Explicit PostgreSQL and extension versioning
  • Multi-distro support

Image Labels

Each extension image includes OCI-compliant labels for runtime inspection and tooling integration. These metadata fields enable CloudNativePG and other tools to identify the base PostgreSQL version and OS distribution.

CloudNativePG-Specific Labels

Label Description Example
io.cloudnativepg.image.base.name Base PostgreSQL container image ghcr.io/cloudnative-pg/postgresql:18-minimal-bookworm
io.cloudnativepg.image.base.pgmajor PostgreSQL major version 18
io.cloudnativepg.image.base.os Operating system distribution bookworm
io.cloudnativepg.image.sql.version PostgreSQL extension SQL version 1.6

Standard OCI Labels

In addition to CloudNativePG-specific labels, all images include standard OCI annotations as defined by the OCI Image Format Specification:

Label Description
org.opencontainers.image.created Image creation timestamp
org.opencontainers.image.version Extension's package version
org.opencontainers.image.revision Git commit SHA
org.opencontainers.image.title Human-readable image title
org.opencontainers.image.description Image description
org.opencontainers.image.source Source repository URL
org.opencontainers.image.licenses License identifier

You can inspect these labels using container tools:

# Using docker buildx imagetools
docker buildx imagetools inspect <image> --raw | jq '.annotations'

# Using skopeo
skopeo inspect docker://<image> | jq '.Labels'

Image catalogs

To simplify the deployment of PostgreSQL extensions, this project automatically generates ClusterImageCatalog resources. These catalogs provide a curated list of compatible extension images for PostgreSQL 18+ versions. The generated catalog starts from CNPG's upstream extension catalog, then adds the images maintained in this repository. Definitions from the upstream catalog are retained.

  • Frequency: Built once a week.
  • Location: Published in the artifacts repository.
  • Naming Convention: These are based on the minimal catalog and use the catalog-minimal prefix (e.g., catalog-minimal-trixie.yaml)

For example, apply the PostgreSQL 18 catalog for Debian trixie with:

kubectl apply -f \
  https://raw.githubusercontent.com/cnpg-extensions/artifacts/main/image-catalogs-extensions/catalog-minimal-trixie.yaml

Clusters using this catalog should reference it instead of the corresponding upstream base catalog; it already includes the upstream extension definitions.

About

Container images for community PostgreSQL extensions to be used as pluggable image volumes with CloudNativePG

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages