Pigsty v4.5: 575 Extensions, Kafka, MySQL, Valkey, and Silo
Pigsty v4.5.0 is a feature release spanning data services, the PostgreSQL ecosystem, automation safety, and the software supply chain. It adds Kafka KRaft and MySQL 8.4 pilot modules, adds a Valkey engine to REDIS, converges the MINIO module on Silo, and grows the packaged PostgreSQL extension catalog from 531 to 575.
This full review covers 100 commits, 416 files, 42,058 insertions, and 15,984 deletions from v4.4.0 (2026-07-10) to v4.5.0 (dab5dba3, 2026-08-14). See the complete source diff at v4.4.0...v4.5.0. A substantial share of the structured diff comes from re-exporting the entire Grafana dashboard set to Dashboard API v2.
Release Highlights
- 575 PostgreSQL extensions: 46 entries added and 2 removed, for a net gain of 44. Many Rust extensions move to pgrx 0.19.1, with synchronized RPM/DEB coverage and package-name mappings.
- Kafka KRaft module: Native Kafka orchestration with multi-cluster support, dynamic enrollment and retirement, SCRAM-SHA-512/TLS, credential rotation, health gates, monitoring, alerting, and four Grafana dashboards.
- MySQL 8.4 module: Standalone and three-node InnoDB Cluster deployments with MySQL Router, XtraBackup, account and database provisioning, parameter protection, monitoring, alerting, and conservative retirement workflows.
- Valkey and Silo: REDIS adds
redis_type: valkey; MINIO now accepts onlyminio_type: silo. The RustFS backend developed during this cycle was withdrawn before the final baseline. - Safer cluster orchestration: PGSQL, REDIS, MINIO, KAFKA, and MYSQL select members by explicit cluster identity. etcd delegation, DBSU key exchange, PITR, backup markers, and removal workflows are tightened as well.
- Observability upgrades: New Kafka and MySQL dashboards, MinIO/Silo Metrics V3, and
pg_exporter1.4-series configuration with PG19, transaction-age, lock, replication, and cleanup-pressure coverage. - Repository and supply-chain upgrades: SOW now generates local repositories atomically without fabricated ModuleMD. Offline bundles can carry versioned source archives. Infra repackaging standardizes SHA-256-pinned inputs, SPDX licenses, and the
1PGSTYrelease suffix. - 51 standalone configuration templates: Adds
demo/kafka,demo/mysql, and the eight-nodeha/octosimulation, while updatingha/trioto a compact three-node Silo HA topology.
Kafka KRaft Pilot Module
The new Kafka module uses node state as the source of truth and manages brokers and controllers with dynamic KRaft. It supports multiple Kafka clusters in one inventory and unbounded kafka.yml runs; incomplete --limit selections are rejected to avoid updating only part of the quorum.
- Nodes persist authoritative manifests and secrets, supporting dynamic controller joins, broker admission, member retirement, and three-stage failed-member replacement.
- SCRAM-SHA-512, TLS, certificate rotation, and credential rotation are supported, followed by partition-health and protocol self-tests.
kafka-rm.ymlrequires a non-empty-l/--limitand validates absolute data paths, target identity, and the surviving anchors needed for partial retirement before stopping services.- Adds JMX Exporter, Kafka Exporter, Victoria scrape and alert rules, plus Overview, Instance, Topic, and Consumer Grafana dashboards.
Kafka remains a pilot module. Clients must resolve and reach every broker directly; do not put the Kafka data plane behind HAProxy, a VIP, or a conventional L4 load balancer.
MySQL 8.4 Pilot Module
The new MySQL module targets a fixed MySQL 8.4 LTS platform. It supports a standalone instance or a three-node InnoDB Cluster and includes MySQL Shell, MySQL Router, TLS, user/database provisioning, scheduled full XtraBackup backups, and unified monitoring.
- Initialization validates exactly one or three members, creates the cluster, coordinates Router, and handles existing members and partial states idempotently.
mysql_parametersprotects replication, TLS, and platform-reserved settings;loose_,skip_,disable_, andenable_prefixes cannot bypass the guardrails.mysql_databasesaccepts onlyname,encoding, andcollate; databases are created withDEFAULT ENCRYPTION='N'.- Removal validates the target, quorum, and member state before isolation, shutdown, and cleanup. Unlike other modules,
mysql-rm.ymlfails closed when a selected host has no MySQL identity. - Adds Overview, Cluster, Instance, Replication, and Alert Grafana dashboards plus mysqld_exporter alerts.
Valkey, Silo, and Mongo Mode
Redis / Valkey
REDIS keeps Redis as the default engine and can select Valkey explicitly with redis_type: valkey. Valkey uses the valkey-server and valkey-cli packages, while configuration paths, monitoring jobs, service interfaces, and module parameters retain redis names for compatibility with existing inventories and dashboards.
Redis/Valkey systemd units now use Type=notify with a 1,800-second startup timeout. Topology validation, primary/replica relationships, password handling, tag-scoped removal, and rebuild protection are also strengthened.
MINIO / Silo
MINIO remains the compatibility module name, but the v4.5 role deploys Silo and only Silo; silo is the sole valid minio_type. Silo preserves the S3/Admin APIs, /minio/* routes, MINIO_* environment variables, and existing disk format, while the package, binary, and systemd service are now named silo.
- Startup checks the systemd Invocation ID,
ActiveState=active, and Silo cluster health, waiting up to roughly 600 seconds so stale process state is not mistaken for a successful restart. - Object-storage members are grouped by
minio_cluster, independent of the inventory group name. Multi-cluster inventories should use distinctminio_alias,minio_domain, andminio_endpointvalues. ha/triochanges from single-node object storage to three single-disk Silo members with EC:1, exposed on port 9002 through VIP and HAProxy. The template declares all three default users explicitly soconfigure -gproduces consistent S3 credentials.- Distributed Silo requires
/data/minioto be a separate filesystem; Silo rejects an ordinary directory on the root filesystem. - A RustFS backend was added during development and fully withdrawn from the final source. Infra repositories may still carry RustFS or MinIO packages, but neither is a supported v4.5 MINIO backend.
PostgreSQL Mongo Mode
The standalone FERRET role and mongo.yml playbook are removed. Their function is split between PostgreSQL Mongo mode and the FerretDB Docker APP: PostgreSQL/DocumentDB provides the data layer, and FerretDB in Docker Compose provides the MongoDB protocol layer. Pigsty no longer ships the old FerretDB systemd service, dedicated scrape configuration, or Mongo dashboards.
Orchestration, Security, and Lifecycle
deploy.yml,slim.yml, and the PGSQL, REDIS, MINIO, KAFKA, and MYSQL initialization playbooks skip unrelated hosts by their respective*_clusteridentities. PGSQL, REDIS, MINIO, and KAFKA removal playbooks apply the same rule.- PGSQL configuration, PITR, and removal delegate only when a canonical, non-empty
etcdgroup exists. DBSU SSH keys are exchanged among actualpg_cluster_members, including cross-inventory-group topologies such as Citus. - PITR and removal delete only etcd subtrees bounded by
/<cluster>/, avoiding accidental deletion when one cluster name prefixes another. The initial pgBackRest backup writesinitial.doneonly after the command succeeds. - Removal workflows stop services before cleaning data. Kafka, MySQL, and object storage add directory, quorum, surviving-member, and cluster-identity checks.
- A full
pgsql.ymlrun is now explicitly described as initialization-only: it restarts Patroni/PostgreSQL and reapplies managed configuration and bootstrap SQL, so it is not a routine convergence command for initialized clusters. - Pigsty-rendered systemd units live under
/etc/systemd/system; permissions are tightened for sensitive configuration, environment files, keys, and privileged scripts. Debian/Ubuntu package installation suppresses premature starts of Silo, Redis/Valkey, and legacy logging services. - HAProxy uses a fixed
/etc/haproxy/haproxy.cfgplus/etc/haproxy/conf.dlayout, upstream master-worker mode, a master socket, andType=notify. dnsmasq uses dynamic binding, answers private PTR locally, and handles node addresses that appear only after INFRA initialization. - Debian/Ubuntu time sync writes the native
/etc/chrony/chrony.conf, while EL continues to use/etc/chrony.conf. During initial synchronization, offsets greater than ten seconds may step within the first 120 updates.
PostgreSQL Kernels and Extensions
- Default PostgreSQL updates to 18.6 with the repositories. The four standard Patroni templates add an
output_plugin_librariesallowlist forpgoutput,test_decoding, andwal2json; Patroni filters unsupported settings on older versions. - The PostgreSQL 19 beta template gains pgBackRest 2.59 and scheduled backup support. It still installs no extensions by default and remains a PG19 trial template.
- Percona PostgreSQL 18 TDE uses cluster mode and keeps Pigsty’s private installation prefix to avoid collisions with native PostgreSQL.
- IvorySQL gains default-database initialization and compatible WAL compression in the standard workload templates.
- The PostgreSQL fact loader, per-platform
package_map, and default extension groups are refreshed together, fixing PGDG/YUM names and missing packages.
Comparing the embedded catalog snapshots in Pig v1.5.1 (531 entries) and v1.7.0 (575 entries), this cycle adds 46 extensions and removes 2, for a net gain of 44:
- 32 primary extensions added:
argm,cat_tools,cron_utils,fbsql,oidc_validator,online_advisor,pg_cjk_parser,pg_column_tetris,pg_describe,pg_disorder,pg_fts,pg_jieba,pg_kpart,pg_lake,pg_local_cache,pg_mentat,pg_oidc_validator,pg_policy,pg_roast,pg_tiktoken_c,pg_turbovec,pg_vault_tde,pgcontext,pgfr_record,pgmemento,pgmonitor,pgsqlmock,pgwasm,plruby,plx,postbis, andqdgc. - 13 subextensions added:
hstore_plruby,jsonb_plruby,ltree_plruby,pg_extension_base,pg_extension_updater,pg_lake_copy,pg_lake_engine,pg_lake_iceberg,pg_lake_table,pg_map,pgcontext_pgvector,pgfr_analyze, andqdgc_postgis. - One PGDG extension added:
pg_statviz. It remains in the online catalog but is not part of the default installation groups. pg_analyticsandspatremoved: the former is archived, and the latter is a deprecated alpha project.
In addition, emailaddr, explain_ui, the Rust oidc_validator, pg_summarize, and smlar leave the default installation groups because upstream does not provide a distributable license; packages and catalog records may remain. pg_relation_sql is a standalone SQL toolkit without CREATE EXTENSION support, so it appears in the packaging table but is not counted among the 575 extensions.
Extension Package Update Matrix
The table consolidates RPM and DEB batches after v4.4.0 into one final “old version → final version” row per extension: 207 packaged entries plus two catalog removals. Where RPM and DEB differ, both are shown. An unchanged version can still represent a rebuild or a change in package naming, license metadata, or platform coverage.
The first packaging log after July 10 covers July 7–24 without per-entry dates, so the whole batch is included to avoid omitting post-release pgrx 0.19.1 rebuilds and matrix fixes. The final repository indexes remain authoritative for versions and platform availability.
| Extension | Previous | Final | Notes |
|---|---|---|---|
age | RPM: 1.7.0 | RPM: 1.8.0 | RPM only; PG18 is 1.8.0-rc0, PG17 is 1.7.0 |
anon | 3.1.1 | 3.1.3 | pgrx 0.19.1 |
argm | - | 1.1.1 | |
asn1oid | RPM: 1.6 | RPM: 1.6 | RPM only; license metadata changed to GPL-3.0-or-later |
babelfishpg_money | 1.1.0 | 1.1.0 | Adds PG18 support |
babelfishpg_tds | 1.0.0 | 1.0.0 | Adds PG18 support |
babelfishpg_tsql | 5.5.0 | 5.4.0 | Catalog version corrected to 5.4.0; PG17–18 |
biscuit | 2.4.1 | 3.0.0 | PG16–18; REINDEX is required after upgrading from 2.x |
block_copy_command | 0.1.5 | 0.1.5 | pgrx 0.19.1 |
cat_tools | - | 0.3.0 | Pure SQL extension |
citus | 14.1.0 | 14.2.0 | PG16–18; includes citus_columnar; fills EL10/PG14 RPM coverage |
convert | 0.1.0 | 0.1.0 | pgrx 0.19.1 |
cron_utils | - | 0.1.0 | Pure SQL extension |
dbt2 | 0.61.7 | 0.61.7 | Adds DEB PG14–18 and EL8 RPM PG17–18 |
decoder_raw | 1.0 | 1.0 | Adds EL10/Debian 13; PG14–16 |
decoderbufs | 3.5.0 | RPM: 3.5.0DEB: 3.6.0 | RPM remains 3.5.0; DEB updates to 3.6.0 |
documentdb | 0.113 | 0.114 | PG15–18; expands to 16 platforms |
documentdb_core | 0.113 | 0.114 | PG15–18; expands to 16 platforms |
documentdb_distributed | 0.113 | 0.114 | PG15–18; expands to 16 platforms |
documentdb_extended_rum | 0.113 | 0.114 | PG15–18; expands to 16 platforms |
emailaddr | 0 | 0 | Removed from default groups because upstream provides no license |
emaj | RPM: -DEB: 4.7.1 | 5.0.0 | RPM package renamed to e-maj, with Provides/Obsoletes for the old emaj name |
etcd_fdw | 0.0.1 | 0.0.1 | pgrx 0.19.1 |
explain_ui | 0.0.2 | 0.0.2 | pgrx 0.19.1 rebuild; removed from default groups because upstream provides no license |
faker | 0.5.3 | 0.5.3 | Completes RPM/DEB coverage; Debian 12 and Ubuntu 22.04 use python3-fake-factory 22.0.0 |
fbsql | - | 0.1.0 | PG16–18; depends on PL/R |
gb18030_2022 | 1.0 | 1.0 | IvorySQL 5.4; PG18 only |
graph | 0.1.7 | 1.0.0 | pggraph; pgrx 0.19.1 |
h3 | 4.2.3 | 4.2.3 | Adds EL8 x86_64 / PG17–18 RPM |
hdfs_fdw | 2.3.3 | 2.3.3 | Adds DEB PG14–18 |
hstore_pllua | 2.0.12 | 2.0.12 | Adds six EL RPM targets |
hstore_plluau | 2.0.12 | 2.0.12 | Adds six EL RPM targets |
http | 1.7.1 | 1.7.2 | |
hunspell_cs_cz | 1.0 | 1.0 | Consolidated hunspell package; 10 dictionaries |
hunspell_de_de | 1.0 | 1.0 | Consolidated hunspell package; 10 dictionaries |
hunspell_en_us | 1.0 | 1.0 | Consolidated hunspell package; 10 dictionaries |
hunspell_fr | 1.0 | 1.0 | Consolidated hunspell package; 10 dictionaries |
hunspell_ne_np | 1.0 | 1.0 | Consolidated hunspell package; 10 dictionaries |
hunspell_nl_nl | 1.0 | 1.0 | Consolidated hunspell package; 10 dictionaries |
hunspell_nn_no | 1.0 | 1.0 | Consolidated hunspell package; 10 dictionaries |
hunspell_pt_pt | 1.0 | 1.0 | Completes 16-platform coverage; pt_pt.stop avoids a kernel conflict |
hunspell_ru_ru | 1.0 | 1.0 | Consolidated hunspell package; 10 dictionaries |
hunspell_ru_ru_aot | 1.0 | 1.0 | Consolidated hunspell package; 10 dictionaries |
imgsmlr | 1.0 | 1.0 | Adds EL10/Debian 13 |
ivorysql_ora | 1.0 | 1.0 | IvorySQL 5.4; PG18 only |
jdbc_fdw | 0.4.0 | 0.5.0 | Package 0.5.0, SQL version 1.2 |
jsonschema | 0.1.9 | 0.1.9 | pgrx 0.19.1 |
mobilitydb | 1.3.0 | 1.3.0 | Adds six EL RPM targets and Ubuntu 22.04 / PG18 DEB |
mobilitydb_datagen | 1.3.0 | 1.3.0 | Completes RPM/DEB coverage with mobilitydb |
nominatim_fdw | 1.3 | 2.1.0 | |
numeral | RPM: 1.3 | RPM: 1.3 | RPM only; renamed postgresql-numeral; license metadata changed to GPL-2.0-or-later |
odbc_fdw | 0.5.1 | 0.6.1 | Package 0.6.1, SQL version 0.5.2 |
ogr_fdw | 1.1.8 | 1.1.9 | |
oidc_validator | - | 0.1.0 | PG18 only; removed from default groups because upstream provides no license |
omni | 0.2.14 | 0.2.14 | EL10 supports PG14–18; other existing targets are PG18 only |
online_advisor | - | 1.0 | |
ora_btree_gin | 1.0 | 1.0 | IvorySQL 5.4; PG18 only |
ora_btree_gist | 1.0 | 1.0 | IvorySQL 5.4; PG18 only |
pg_ai_query | RPM: 0.1.1 | RPM: 0.1.1 | EL9/10 RPM only; requires GCC 13 / OpenSSL 3 |
pg_analytics | 0.3.7 | - | Upstream archived; removed from the packaged extension catalog |
pg_base58 | 0.0.1 | 0.0.1 | pgrx 0.19.1 |
pg_bestmatch | 0.0.2 | 0.0.2 | pgrx 0.19.1 |
pg_cardano | 1.2.0 | 1.2.0 | pgrx 0.19.1; PG15–18 |
pg_cjk_parser | - | 0.1.0 | |
pg_clickhouse | 0.3.2 | 0.10.0 | |
pg_column_tetris | - | 0.1.0 | Pure SQL |
pg_command_fw | 0.1.0 | 0.1.0 | pgrx 0.19.1; PG15–18 |
pg_csv | RPM: 1.0.1 | RPM: 1.0.2 | Adds RPM; package 1.0.2, SQL version 1.0.1 |
pg_dbms_errlog | 2.2 | 2.4 | |
pg_dbms_job | 2.0 | 2.0 | Adds DEB package |
pg_dbms_lock | 2.0 | 2.0 | Adds DEB package |
pg_dbms_metadata | 1.0.0 | 1.0.0 | Adds DEB plus EL8 aarch64 / PG15 RPM |
pg_describe | - | 1.0.0 | PG17–18 |
pg_disorder | - | 0.1.0 | |
pg_durable | 0.2.2 | 0.2.3 | pgrx 0.19.1 |
pg_enigma | 0.5.0 | 0.5.0 | pgrx 0.19.1 |
pg_eviltransform | 0.0.2 | 0.0.4 | pgrx 0.19.1 |
pg_extension_base | - | 3.4 | pg_lake 3.4 subextension; PG16–18; RPM only on EL9/10 |
pg_extension_updater | - | 3.4 | pg_lake 3.4 subextension; PG16–18; RPM only on EL9/10 |
pg_fact_loader | 2.0.1 | 2.0.1 | U26 DEB |
pg_failover_slots | 1.2.1 | 1.2.1 | Requires preload; license metadata changed to PostgreSQL |
pg_fts | - | 0.2.0 | PG17–18 |
pg_geohash | 1.0 | 1.0 | Fixes SQL filename and target PostgreSQL ABI; license metadata changed to MIT |
pg_get_functiondef | 1.0 | 1.0 | IvorySQL 5.4; PG18 only |
pg_graphql | 1.6.1 | 1.6.1 | pgrx 0.19.1 |
pg_idkit | 0.4.0 | 0.4.0 | pgrx 0.19.1 |
pg_ivm | 1.14 | 1.15 | |
pg_jieba | - | 1.1.0 | Package 2.0.1, SQL version 1.1.0 |
pg_jsonschema | 0.3.4 | 0.3.4 | pgrx 0.19.1 |
pg_kazsearch | 2.2.0 | 2.3.0 | pgrx 0.19.1; PG16–18 |
pg_kpart | - | 1.0 | |
pg_lake | - | 3.4 | PG16–18; RPM only on EL9/10 |
pg_lake_copy | - | 3.4 | pg_lake 3.4 subextension; PG16–18; RPM only on EL9/10 |
pg_lake_engine | - | 3.4 | pg_lake 3.4 subextension; PG16–18; RPM only on EL9/10 |
pg_lake_iceberg | - | 3.4 | pg_lake 3.4 subextension; PG16–18; RPM only on EL9/10 |
pg_lake_table | - | 3.4 | pg_lake 3.4 subextension; PG16–18; RPM only on EL9/10 |
pg_later | 0.4.0 | 0.4.0 | pgrx 0.19.1 |
pg_local_cache | - | 1.3.0 | Requires preload; single-primary only |
pg_map | - | 3.4 | pg_lake 3.4 subextension; PG16–18; RPM only on EL9/10 |
pg_mentat | - | 1.5.7 | |
pg_mooncake | 0.2.0 | 0.2.0 | pgrx 0.19.1 |
pg_net | 0.20.3 | EL8/9, U22: 0.9.2Others: 0.20.5 | EL8/9 and Ubuntu 22.04 remain on 0.9.2; other targets use 0.20.5 |
pg_oidc_validator | - | 1.1.0 | PG18 only; adds discovery_url_override; RPM only on EL10 |
pg_parquet | 0.5.1 | 0.5.1 | pgrx 0.19.1 |
pg_partman | RPM: 5.4.0DEB: 5.4.2 | 5.5.0 | DEB package is postgresql-PGVERSION-partman |
pg_pinyin | 0.0.4 | 0.0.5 | pgrx 0.19.1 |
pg_policy | - | 0.1.0 | Pure SQL |
pg_polyline | 0.0.1 | 0.0.1 | pgrx 0.19.1 |
pg_rational | 0.0.2 | 0.0.3 | RPM built by Pigsty; DEB from PGDG |
pg_readme | 0.7.0 | RPM: 0.7.0DEB: 0.7.1 | RPM remains PGDG 0.7.0; DEB 0.7.1 includes test subextensions |
pg_relation_sql | - | 0.2.2 | Standalone SQL toolkit without CREATE EXTENSION; excluded from the 575 count |
pg_render | 0.1.3 | 0.1.3 | pgrx 0.19.1 |
pg_rewrite | 2.0.0 | 2.2 | RPM/DEB package name standardized as postgresql-PGVERSION-pg-rewrite |
pg_roast | - | 1.0 | |
pg_rrf | 0.0.3 | 0.0.3 | pgrx 0.19.1 |
pg_search | 0.24.0 | 0.25.2 | PG15–18; pgrx 0.19.1; requires preload; adds pgvector/OpenBLAS dependencies |
pg_session_jwt | 0.5.0 | 0.5.0 | pgrx 0.19.1 |
pg_smtp_client | 0.2.1 | 0.2.1 | pgrx 0.19.1 |
pg_squeeze | 1.9.2 | 1.9.4 | |
pg_statement_rollback | 1.5 | 1.6 | |
pg_statviz | - | RPM: 0.9DEB: 1.1 | Not in default groups; RPM 0.9 and DEB 1.1 have different coverage |
pg_strict | 1.0.5 | 1.0.5 | pgrx 0.19.1 |
pg_strom | 6.1 | 6.1 | EL10 x86_64 / PG14 only; extension SQL version 3.5 |
pg_summarize | 0.0.1 | 0.0.1 | pgrx 0.19.1 rebuild; removed from default groups because upstream provides no license |
pg_tde | 2.1 | 2.2 | Percona; PG17–18 |
pg_tiktoken | 0.0.1 | 0.0.1 | pgrx 0.19.1 |
pg_tiktoken_c | - | 1.1 | |
pg_tokenizer | 0.1.1 | 0.1.1 | pgrx 0.19.1 |
pg_trickle | 0.81.0 | 0.81.0 | pgrx 0.19.1; PG18 |
pg_turbovec | - | 1.29.0 | pgrx 0.19.1 |
pg_uuid_v8 | 1.0.0 | 1.1.0 | Includes the 1.0-to-1.1 upgrade script |
pg_vault_tde | - | 1.7.0 | PG17–18; requires preload; RPM only on EL9/10 |
pg_wait_sampling | RPM: 1.1.11 | RPM: 1.1.11 | Adds RPM; package 1.1.11, SQL version 1.1 |
pg_when | 0.1.9 | 0.1.10 | Packaging moves to pgrx 0.19.1 |
pgactive | DEB: 2.1.7 | DEB: 2.1.7 | DEB only; fixes PG14–18 builds |
pgauditlogtofile | 1.8.4 | 1.8.5 | |
pgautofailover | 2.2 | 2.2 | Adds six EL / PG18 RPM targets |
pgbouncer_fdw | 1.4.0 | 1.4.0 | Adds DEB package |
pgbson | 2.0.2 | 2.1.0 | RPM package is postgresbson; DEB source package is postgresbson |
pgclone | 4.3.2 | 4.4.2 | |
pgcontext | - | 0.2.0 | PG17–18; pgrx 0.19.1; optional pgvector compatibility bridge |
pgdd | 0.6.1 | 0.6.1 | pgrx 0.19.1 |
pgedge | RPM: 18.4 | RPM: 18.4 | RPM only; fixes PG15–18 ABI |
pgextwlist | 1.19 | 1.20 | |
pgfr_analyze | - | 2.29.2 | pg_flight_recorder subextension; PG15–18 |
pgfr_record | - | 2.29.2 | pg_flight_recorder; PG15–18 |
pgl_ddl_deploy | 2.2.1 | 2.2.1 | Adds PG18 DEB and Ubuntu 26.04 / PG14–17 |
pglinter | 2.0.0 | 2.0.0 | pgrx 0.19.1 |
pglite_fusion | 0.0.6 | 0.0.6 | pgrx 0.19.1 |
pglogical_ticker | 1.4.1 | 1.4.1 | Adds six EL RPM / PG14–17 targets |
pgmemcache | 2.3.0 | 2.3.0 | Adds EL8 aarch64 / PG14–15 RPM |
pgmemento | - | 0.7.4 | Pure SQL extension |
pgml | 2.10.0 | 2.10.0 | Adds EL10, Debian 13, and Ubuntu 26.04; PG14–17 |
pgmnemo | 0.12.1 | 0.16.1 | PG17–18; requires pgvector 0.7.0 or later |
pgmonitor | - | 2.2.0 | |
pgmp | - | 1.0.6 | Requires GMP |
pgmq | 1.11.1 | 1.12.0 | |
pgmqtt | 0.3.0 | 0.4.1 | pgrx 0.19.1 |
pgnodemx | RPM: 1.7 | RPM: 2.0.1 | RPM only; package 2.0.1, SQL version 2.0; stronger cgroup security |
pgpcre | RPM: 0.20190509 | RPM: 0.20190509 | EL8/9 RPM only |
pgrdf | 0.6.4 | 0.6.20 | pgrx 0.19.1 |
pgsentinel | 1.4.1 | RPM: 1.4.2DEB: 1.4.0 (U26: 1.4.1) | RPM 1.4.2; DEB 1.4.0; Ubuntu 26.04 uses 1.4.1 |
pgsmcrypto | 0.1.1 | 0.1.1 | pgrx 0.19.1 |
pgspider_ext | 1.3.0 | 1.3.0 | Adds PG18; DEB supports PG15–18 |
pgsqlmock | - | 1.0.1 | |
pgwasm | - | 0.1.0 | |
pgx_ulid | 0.2.3 | 0.2.3 | pgrx 0.19.1 |
pgzint | DEB: - | DEB: 0.2.0 | Debian 13 / Ubuntu 26.04 DEB only; requires Zint 2.14 or later |
plisql | 1.0 | 1.0 | IvorySQL 5.4; PG18 only |
pllua | 2.0.12 | 2.0.12 | Adds six EL / PG18 and EL8 aarch64 / PG14–15 RPM targets |
plpgsql_check | 2.9.2 | 2.10.4 | Preload becomes optional |
plproxy | 2.11.0 | 2.12.0 | |
plprql | 18.0.1 | 18.0.1 | pgrx 0.19.1 |
plruby | - | 2.5.0 | Includes jsonb_plruby, hstore_plruby, and ltree_plruby |
plx | - | 1.3.1 | |
polardb-17 | 17.10.1.0-1PIGSTY | 17.10.1.0-2PGSTY | PG17 rebuild; release suffix standardized from PIGSTY to PGSTY |
polarstore | 1.2.42-1PIGSTY | 1.2.42-2PGSTY | Rebuild; release suffix standardized from PIGSTY to PGSTY |
postbis | - | 1.0 | Includes PG14–18 compatibility patch |
powa | 5.1.2 | RPM: 5.1.0DEB: 5.2.0 | DEB is 5.2.0; RPM remains 5.1.0 |
pre_prepare | RPM: 0.9 | RPM: 0.9 | RPM only; license metadata changed to PostgreSQL |
provsql | 1.10.0 | 1.12.0 | |
q3c | RPM: 2.0.2DEB: 2.0.4 | 2.0.5 | Final RPM and DEB are both PGDG 2.0.5 |
qdgc | - | 0.1.0 | Includes qdgc_postgis subextension |
rdf_fdw | 2.6.0 | 2.7.0 | |
rdkit | 202503.6 | 202503.6 | Platforms retain either 202303.3 or 202503.6; runtime versions are not unified |
re2 | 0.3.0 | 0.4.1 | PG16–18 |
smlar | 1.0 | 1.0 | Removed from default groups because upstream provides no license |
snowflake | 2.4 | 2.5.0 | pgEdge; PG15–18 |
spat | 0.1.0a4 | - | Deprecated upstream alpha project; removed from the packaged extension catalog |
spock | 5.0.6 | 5.0.10 | pgEdge; PG15–18 |
sqlite_fdw | 2.5.0 | 2.5.0 | Adds PG18; EL8 uses the system SQLite |
sslutils | 1.4 | 1.4 | Adds EL8 dual-architecture / PG18 RPM |
system_stats | DEB: 4.0 | DEB: 4.1 | DEB only; covers 10 DEB targets |
tdigest | 1.4.3 | 1.4.4 | |
timescaledb | 2.28.2 | 2.29.1 | PG16–18 |
timescaledb_toolkit | 1.23.0 | 1.23.0 | pgrx 0.19.1; PG15–18 |
timeseries | DEB: 0.2.1 | DEB: 0.2.1 | DEB only; fixes partman/cron recommended dependencies and docs |
typeid | 0.3.0 | 0.3.0 | pgrx 0.19.1 |
tzf | 0.3.0 | 0.3.0 | pgrx 0.19.1 |
unit | 7.10 | 7.10 | License metadata changed to GPL-3.0-or-later |
uri | RPM: 1.20251029 | RPM: 1.20251029 | RPM only; renamed pguri with Provides/Obsoletes for pg_uri |
vchord | 1.1.1 | 1.1.1 | pgrx 0.19.1 |
vchord_bm25 | 0.3.0 | 0.3.0 | pgrx 0.19.1 |
vector | 0.8.4 | 0.8.6 | |
vectorize | 0.26.2 | 0.26.2 | pgrx 0.19.1 |
vectorscale | 0.9.0 | 0.9.0 | pgrx 0.19.1 |
wal2mongo | 1.0.7 | 1.0.7 | Adds PG17–18 |
wrappers | 0.6.1 | 0.6.2 | pgrx 0.19.1 |
zlog | 1.2.18-1PIGSTY | 1.2.18-2PGSTY | Rebuild; release suffix standardized from PIGSTY to PGSTY |
Observability
- The complete Grafana dashboard set is re-exported through the Pig/Grafana tooling as Dashboard API v2. Four Kafka and five MySQL dashboards are added, and links, variables, and layouts are refreshed for Node, PostgreSQL, Redis, and Infra dashboards.
- MinIO/Silo Overview and Instance dashboards move to Metrics V3. Victoria scrapes
/minio/metrics/v3and drops high-cardinality samples with a non-emptybucketlabel. pg_exporterconfiguration updates to 1.4.0 and fixes the duplicate time series produced by the 1.4.1pg_subrelquery.- PG19 gains
pg_sub_19,pg_recovery_state,pg_wal_19,pg_lock_stat, andpg_vacuum_scorecollectors. PG10+ gains apg_xact_agetransaction-age histogram, replication-slotidle_timeout, and WAL Receiverconnectingstate encoding. - Kafka JMX/protocol exporters and the MySQL exporter join unified service discovery, Victoria scraping, and alert rules. Journald records without a
PRIORITYfield are handled safely.
Repositories, Offline Bundles, and Supply Chain
- REPO and CACHE use
sow create --pigstyto generate DNF/APT metadata and the SHA-256repo_completemarker atomically, without injecting fabricated ModuleMD. module_hotfixesbecomes an explicit per-repository choice and is enabled only for EL repositories that must replace system module streams, avoiding indiscriminate DNF module-filter bypasses.- If
dist/<version>/pigsty-<version>.tgzalready exists,cache.ymlincludes it in the offline repository. It does not implicitly package the current worktree or download source code from the internet. - RPM exporter package names change from underscores to hyphens, for example
node_exporter→node-exporter; unversionedProvides/Obsoletesentries bridge the old names. - Local Infra repackaging standardizes the
PGSTYvendor, SPDX license expressions,1PGSTYrelease suffix,/etc/default/<service>environment files, vendor units under/usr/lib/systemd/system, and legal files under/usr/share/doc/<package>. - Simple binary packages use reproducible upstream archives pinned by SHA-256; vendor-native RPM/DEB files retain their original bytes and metadata. Direct artifacts such as Silo, Grafana, Code, Code Server, and Vector gain pinned URLs and checksums.
- China-region routing is refreshed systematically: operating systems, Docker, Grafana, Percona, MongoDB APT, and uv/PyPI prefer Tencent Cloud; EL/Docker retain Huawei Cloud and Alibaba Cloud fallbacks; MySQL/Kubernetes use USTC; ClickHouse uses Huawei Cloud.
Infra Package Update Matrix
The table consolidates this cycle’s Infra batches into one row per package, showing only the v4.4.0 value, final v4.5.0 value, and essential notes. Intermediate versions are omitted. “Built” or “verified” describes packaging records only; the signed repository index at release time remains authoritative for installable versions.
| Package | Previous | Final | Notes |
|---|---|---|---|
agentsview | 0.37.5 | 0.40.1 | |
claude | 2.1.206 | 2.1.227 | |
cloudflared | 2026.7.1 | 2026.7.3 | |
code | 1.128.0 | 1.133.0 | |
code-server | 4.127.0 | 4.132.0 | |
codex | 0.144.1 | 0.147.0 | |
crush | 0.84.0 | 0.88.1 | Compliance rebuild from the official tarball that includes the license |
dblab | 0.43.0 | 0.47.4 | |
duckdb | 1.5.4 | 1.5.5 | |
etcd | 3.6.13 | 3.7.1 | |
ferretdb | 2.7.0 | 2.7.0 | Build chain was temporarily renamed ferretdb2, then restored to ferretdb |
grafana | 13.1.0 | 13.1.3 | Includes security fixes |
grafana-infinity-ds | 3.8.0 | 3.11.3 | |
grafana-victorialogs-ds | 0.29.0 | 0.31.0 | |
headscale | 0.29.2 | 0.29.3 | |
jmx-exporter | - | 1.6.0 | New noarch package |
juicefs | 1.4.0 | 1.4.1 | |
k3s | - | 1.36.3 | Upstream v1.36.3+k3s1 |
k3s-images | - | 1.36.3 | Dual-architecture offline images matching k3s exactly |
logcli | 3.6.7 | 3.7.6 | Updated with the Loki component set |
loki | 3.6.7 | 3.7.6 | Updated with the Loki component set |
loki-canary | - | 3.7.6 | New Loki companion component |
mcli | 20260417000000 | 20260806000000.0.0 | |
mcp-toolbox | 1.6.0 | 1.8.0 | Former genai-toolbox package name and recipe standardized as mcp-toolbox |
minio | 20260618000000 | 20260804000000 | Repository package retained; no longer a v4.5 MINIO backend |
mongodb-exporter | 0.51.0 | 0.52.0 | |
mtail | 3.0.8 | 3.4.7 | |
node-exporter | 1.11.1 | 1.12.1 | RPM renamed from node_exporter to node-exporter |
nodejs | 24.18.0 | 24.19.0 | Node.js 24 LTS security update |
npgsqlrest | 3.20.0 | 3.21.0 | |
opencode | 1.17.18 | 1.18.16 | |
pev2 | 1.22.0 | 1.23.0 | |
pg-exporter | 1.3.0 | 1.4.1 | Moves to the 1.4 series with synchronized collector configuration |
pg-hardstorage | 1.0.8 | 1.2.1 | |
pg-timetable | 6.3.0 | 7.0.0 | Major-version upgrade |
pgbackrest-exporter | 0.23.0 | 0.24.0 | |
pgschema | 1.12.0 | 1.12.2 | |
pgstream | 1.1.1 | 1.3.1 | |
PGSTY package release | mixed | 1PGSTY | Standardized release suffix for self-built RPM/DEB packages |
pig | 1.5.1 | 1.8.0 | Extension catalog refresh |
postgrest | 14.14 | 16.1 | Major-version upgrade; minimum PostgreSQL is 14 |
prometheus | 3.13.1 | 3.13.2 | Security and stability fixes |
promscale | 0.17.0 | 0.17.0 | Upstream archived; final version retained |
promtail | 3.6.7 | 3.6.7 | Frozen at 3.6.7; Loki 3.7 no longer publishes Promtail updates |
rainfrog | 0.3.19 | 0.4.3 | |
rclone | 1.74.4 | 1.75.0 | |
redis-exporter | 1.86.0 | 1.89.0 | RPM renamed from redis_exporter to redis-exporter |
rustfs | 1.0.0-b8 | 1.0.0-rc.1 | Prerelease package retained in the repository; not a v4.5 MINIO backend |
sabiql | 1.14.0 | 1.15.1 | |
sealos | 5.1.1 | 5.0.1 | Pinned to the last Apache-2.0 stable release |
seaweedfs | 4.39 | 4.41 | |
silo | minio 20260804000000 | 20260806000000.0.0 | Replaces the MinIO server as the only v4.5 object-storage backend |
sow | 0.2.0 | 0.3.0 | Core REPO/CACHE dependency |
stalwart | 0.16.12 | 0.16.17 | |
timescaledb-tools | 0.19.0-1 | 0.19.0-2 | Includes timescaledb-parallel-copy 0.13.0 |
uv | 0.11.28 | 0.12.3 | |
v2ray | 5.51.2 | 5.52.0 | |
vector | 0.56.0 | 0.57.0 | |
victoria-logs | 1.51.0 | 1.52.0 | |
victoria-metrics | 1.147.0 | 1.149.0 | |
victoria-metrics-cluster | 1.147.0 | 1.149.0 | |
victoria-traces | 0.9.4 | 0.10.0 | |
vip-manager | 4.2.0 | 5.0.0 | Major-version upgrade; disabled by default after install; configuration is not backward compatible |
vlagent | 1.51.0 | 1.52.0 | |
vlogscli | 1.51.0 | 1.52.0 | |
vmutils | 1.147.0 | 1.149.0 | |
xray | 26.3.27 | 26.3.27 | Candidate 26.7.28 update withdrawn; stable release remains 26.3.27 |
Platforms, Templates, and Release Engineering
- Recommended platform baselines update to Rocky Linux 9.8/10.2, Debian 12.15/13.6, and Ubuntu 22.04.5/24.04.4/26.04.0. Terraform cloud images and pinned Vagrant box versions are refreshed with them.
- Vagrant’s root disk becomes configurable through
root_disk: 64 GiB by default and 128 GiB for theall,rpm,deb,oss, andprobuild matrices. The existingdisksetting still means the extra/datadisk and defaults to 128 GiB. The vagrant user’s login shell is standardized on Bash. - Adds the eight-node
ha/octosimulation.ha/triobecomes a three-node Silo deployment behind VIP/HAProxy;demo/minioexplicitly selects Silo and narrows its local repository package groups. - The
safeanddemotemplates use valid extension aliases. Tuned-profile paths adapt to the operating system, cluster-size comparisons remain compatible with Ansible versions before 2.19, and unused internal flags plus MINIO/INFRA variables are removed. - The Docker base image updates to Debian 13.6 and is marked v4.5.0. Image publishing becomes manually triggered and builds from tags.
docker/Makefilefixes its data directory at repository-local./data;make purgeno longer accepts an externalDATAoverride and has no countdown.- GitHub Actions updates checkout, CodeQL, Docker build/login, and Cosign in bulk. Release, bootstrap, installation, checksum, and build templates tighten parameter and file handling.
- Release archives generate top-level
pigsty.ymlfromconf/meta.yml, include Kafka/MySQL playbooks, and remove the old Mongo playbook. The signing workflow creates Cosign signatures only for thepigsty-<tag>.tgzsource archive, not multi-gigabyte offline bundles. - README, SECURITY, CONTRIBUTING, AGENTS, and NOTICE align on v4.5, 575 extensions, Silo, Redis/Valkey, and Mongo mode, with updated 2026 copyright and trademark language.
Compatibility Changes and Upgrade Notes
Before upgrading from v4.4, review these changes carefully:
- FERRET split: Remove the old
ferretdbsystemd service. Deploy the DocumentDB data layer through Mongo configuration mode, then deploy the FerretDB protocol layer withdocker.yml/app.yml. The oldmongo.yml,mongo_*parameters, and dedicated dashboards are gone. - Silo replaces the MinIO server:
minio_typeaccepts onlysilo. Protocol and disk-format compatibility do not constitute migration acceptance; validate backups, in-place compatibility, rollback, and real read/write traffic before switching existing object storage. ha/trioobject-storage topology changes: The new template uses three single-disk Silo members. Do not expand an existing single-node pool in place by simply adding two members; create a new cluster and migrate objects.- HAProxy unit changes: Pigsty no longer renders
/etc/default/haproxy, though the unit can read it when present. UseEXTRAOPTSonly, keep-S /run/haproxy-master.sock, and do not add-f. - Explicit cluster identity: Custom inventories must define
pg_cluster,redis_cluster,minio_cluster,kafka_cluster, ormysql_clusterfor target hosts. Older inventories that relied only on fixed group names must add these identities. - Full PGSQL playbook is initialization-only: Do not run the complete
pgsql.ymlagainst initialized nodes. Use precise tags for routine maintenance; for a full rebuild, validate backups and remove the target member through the formal workflow first. - Valkey is opt-in: Valkey is installed only with
redis_type: valkey; module parameters, configuration paths, and monitoring interfaces keep Redis names. - SOW is a core dependency: REPO/CACHE requires SOW 0.3.0. If an old offline bundle or local repository lacks
sow, add it from the Pigsty Infra repository first. - Exporter RPM renames: External automation and private repositories should move from old names such as
node_exporterandredis_exportertonode-exporterandredis-exporter. - Default extension groups tighten licensing: Environments that depend on
emailaddr,explain_ui,oidc_validator,pg_summarize, orsmlarmust install them explicitly and assess licensing and redistribution boundaries independently. - Docker purge semantics change:
make purgedirectly deletes repository-local./data; confirm that it contains no container data you need to retain. - Vagrant disk semantics change:
root_diskcontrols the system disk, whilediskcontrols the extra/datadisk. Distributed Silo requires the latter to be a real independent mount.
Get v4.5.0
Install on a fresh, supported Linux node:
A production upgrade is not an overwrite installation. Read the compatibility changes above, resolve the exact target cluster, backup, inventory identity, and live state, then use an explicit -l scope for check mode or maintenance operations.