PostgreSQL November 2026 minor releases: update the server and extensions together



PostgreSQL 18.7, 17.12, 16.16, 15.20 and 14.25 are out today. If you use the PGDG RPM repositories (yum.postgresql.org or zypp.postgresql.org), please update PostgreSQL and all of your extensions in the same transaction this time. Do not update the server today and the extensions next month, and do not hold one back while the other moves.



This release is different from a usual minor release. It contains the fix for CVE-2026-6460, and that fix reaches into the extensions too. So we rebuilt every extension in the repositories against the new minor releases. That covers every package built separately for each PostgreSQL version, on all supported RHEL / Rocky Linux / AlmaLinux, Fedora, Amazon Linux, SLES and openSUSE Leap versions. The rebuilt packages are released together with the new minors.



Why the extensions are tied to the minor release now



The CVE-2026-6460 fix (commit 245eb832f) adds versions for composite types. It changes how composite values are stored, and it changes the server's interface to extensions in two ways:




  • DatumGetHeapTupleHeader() used to be a macro. It is now a function in the server.

  • heap_getattr() now calls the new heap_datum_check().



The headers are compiled into the extension, so this affects both directions:




  • Old extension on a new server: the extension still loads and works. But it does not have the checks of the fix, so it may not be protected from the vulnerability. This is why we rebuilt everything.

  • New extension on an old server: the extension now calls functions that the old server does not have. It fails to load with an "undefined symbol" error.



So a new server needs new extensions to be safe, and the new extensions need a new server to load at all. That is why they have to be updated together.



What changed in the packages



Until now, an extension package only required the PostgreSQL major version. From these rebuilds on, every compiled extension requires at least today’s minor release of its major version. For example, an extension built for PostgreSQL 18 now has:




Requires: postgresql18-libs >= 18.7


The server, client and contrib packages all require the exact same version of postgresql18-libs. So this one line ties the extension to the whole installation: dnf or zypper cannot install the new extension next to an old server.



The extensions also build-require the matching -devel version. A build on a builder that does not have the new minor yet fails, instead of quietly producing a package that is linked against the old headers.



What you should do: one update, everything at once



Update PostgreSQL and the extensions in one transaction:




sudo dnf update # RHEL, Rocky Linux, AlmaLinux, Fedora, Amazon Linux
sudo zypper update # SLES, openSUSE Leap


The dependencies take care of this in most cases. Even sudo dnf update postgis36_18 alone now pulls the new server, client and libs with it. When the server package is updated, it restarts a running PostgreSQL service (systemctl try-restart), so plan a short downtime, as with every minor release.



If you run several major versions on one machine, update all of them. Each major version has its own minor release today and its own rebuilt extensions.



Things to avoid:




  • Holding the server back. With dnf versionlock or an exclude=postgresql18* line, dnf will not update the extensions either. It reports that their dependencies cannot be resolved. Your current extensions keep working on your current minor, but you get neither the security fix nor the new extension builds.

  • Holding the extensions back. If you exclude an extension and update only the server, the old extension still loads, but it is built without the checks of the fix. Update it with the server.

  • Skipping the broken ones. --skip-broken and --nobest leave you with a half-updated system. If dnf complains, find out which lock or exclude causes it instead.

  • Copying RPMs between machines. An extension RPM built today does not load on a server that is still on 18.6 or older. Install from the repository, together with the server.

  • Leaving the old server running. If your service is not managed by the postgresql-18 unit, for example under Patroni or a custom unit, restart PostgreSQL yourself right after the update. Until then, the old server binary is running, and a new extension library loaded into it can fail with "undefined symbol".



In short: treat PostgreSQL and its extensions as one unit, and update them together.



What else the rebuilds found



Rebuilding every extension against the new minors also ran their regression tests against them. Three packages needed fixes:




  • pg_repack: on PostgreSQL 14 to 18, the new minors store a pg_attver=N entry in pg_attribute.attoptions. One test lists the column options, so its expected output no longer matched. We now leave pg_attver out of that check; the test still checks that the column options are kept.

  • rum: one query in the rum_validate test passes a composite value to a deliberately broken operator class. Its result was never defined, and it now fails with "unrecognized operator". We removed only that query; the rest of the test still runs.

  • pllua: this one was a real bug, not a test problem. The new minors also fix CVE-2026-120143: SPI_finish() now drops the cursors that use a trigger's transition tables. pllua closes its SPI connection after every call, so a trigger function that loops over a transition table with spi.rows() crashed the server. Our packages carry a fix, and I sent it upstream as pllua/pllua#19.



The pllua crash is one more reason to update everything together: the old pllua package on a new server crashes in exactly this case.



PostgreSQL 14 and reporting problems



PostgreSQL 14.25 is the final release of PostgreSQL 14. Its packages get today's fix and rebuilds too, but nothing after this. Please plan your upgrade to a newer major version.



Both websites have a news item with the details: yum.postgresql.org and zypp.postgresql.org.



If an update fails to resolve, or an extension fails to load after the update, please open an issue on our issue tracker. Please include the output of rpm -qa | grep postgres and the exact error message.



The PostgreSQL RPM repository needs a lot less EPEL now

For years, installing many packages from the PostgreSQL RPM repository on RHEL and its rebuilds started with the same step: `dnf install epel-release`. PostGIS, pgBackRest, pgcli, patroni, pg_statviz, ora2pg and lots of extensions pulled at least one dependency from EPEL.

Over the last couple of weeks I removed most of those dependencies. On RHEL 8, 9 and 10, the GIS stack, the most popular extensions and almost all of our Python tools now install from the PGDG repositories and the OS repositories (BaseOS, AppStream and CRB) alone.


PostGIS is back on Amazon Linux 2023 (with SFCGAL this time)

The PostgreSQL RPM repository has supported Amazon Linux 2023 for a while, but until this week it had no GIS packages there: a few weeks ago I removed the AL2023 build of the GIS stack, as the distribution does not ship several libraries our GDAL was built against (hdf5, netcdf, xerces-c, Qt and friends).

Taking a second look, all of those turned out to be optional GDAL drivers, so I put the whole stack back, and this time PostGIS also comes with SFCGAL. Everything is available for PostgreSQL 14 to 18, on both x86_64 and aarch64.


What is in the repository?

geos315: 3.15.0
proj98: 9.8.1
libgeotiff17: 1.7.4
librttopo: 1.1.0
libspatialite50: 5.1.0
gdal313 (with the Python 3.13 and Java bindings): 3.13.3
SFCGAL: 2.3.0
PostGIS (postgis33 ... postgis37): 3.3.10, 3.4.6, 3.5.7, 3.6.4, 3.7.0 RC
pgRouting: 4.0.2
ogr_fdw: 1.1.9
h3-pg: 4.5.0
postgis_tiger_geocoder: 2025.2


Amazon Linux 2023 ships its own GDAL 3.10, GEOS 3.13 and PROJ 9.6. Our packages do not replace them: as on RHEL, they are installed under their own prefixes (/usr/gdal313, /usr/geos315, /usr/proj98, ...), and PostGIS is linked against them through the rpath.

SFCGAL

SFCGAL (the library behind the `postgis_sfcgal` extension and the `CG_*` functions) needs CGAL and nlohmann's JSON library to build, and Amazon Linux 2023 has neither. So the repository now has two new build-time packages for
AL2023:

- **CGAL 6.1.2** (`CGAL-devel`, header-only, built without the Qt demos)
- **nlohmann_json 3.12.0** (`nlohmann_json-devel`)

SFCGAL 2.3.0 is built against them, and PostGIS 3.3 to 3.7 are built with SFCGAL support. You only need these two packages if you build software against CGAL yourself: installing PostGIS just pulls in `SFCGAL-libs`.

Installing

```
dnf install https://download.postgresql.org/pub/repos/yum/reporpms/AL-2023-x86_64/pgdg-amazonlinux-repo-latest.noarch.rpm
dnf install postgresql18-server postgis36_18
```

(use `AL-2023-aarch64` on Graviton). Then, in your database:

```
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_raster;
CREATE EXTENSION postgis_sfcgal;
SELECT postgis_full_version();
```

What is missing compared to RHEL

GDAL on Amazon Linux 2023 is built without the drivers whose libraries the distribution does not ship: netCDF, HDF4/HDF5, FITS, LIBKML, XLS, GPSBabel, GMLAS (xerces-c) and Arrow/Parquet. Every other driver, including GeoTIFF, COG, GeoPackage, PostGIS raster and vector, SpatiaLite, PDF (poppler) and the OGR formats PostGIS users rely on, is there. The PostGIS shapefile
loader GUI (`shp2pgsql-gui`) is not built either, as there is no GTK 2.

If you need one of the missing drivers, please open an issue at https://github.com/pgdg-packaging/pgdg-rpms/issues and tell us about your use case. As always, please report any problems you hit with these packages.

Enjoy!


Every package in the PostgreSQL RPM repositories now has a page

For years, https://yum.postgresql.org and https://zypp.postgresql.org have had documentation pages for the extensions we package. But the PGDG repositories hold much more than PostgreSQL and its extensions: backup tools, high availability managers, connection poolers, monitoring tools, drivers, migration tools, and the libraries all of these depend on. Unless you already knew a package name, most of that software was hard to find.

As of today, both sites have a new Software section, linked from the navigation bar:

- https://yum.postgresql.org/software/ (RHEL / Rocky Linux / AlmaLinux, Fedora and Amazon Linux)
- https://zypp.postgresql.org/software/ (SLES 15 / 16 and openSUSE Leap 16.0)

It lists more than 70 packages by category:
- backup and recovery: pgBackRest, Barman, PGHoard, pgmoneta
- high availability: Patroni, Pgpool-II, and etcd, HAProxy, keepalived and vip-manager from the extras repository
- connection poolers: PgBouncer, pgagroal
- monitoring and log analysis: check_postgres, pg_activity, pgwatch, pgBadger
- migration: Ora2Pg, pgloader, pg_chameleon, pgcopydb
- client tools, drivers, and development and testing tools

Each page has a short description, the package names, and the exact dnf or zypper commands to install it, including how to enable the extras or non-free repository when it's needed. It also has a table of the operating systems, architectures and PostgreSQL versions where the package is available. That table comes from the current repository metadata, so it shows what you can actually install today.

Tools built separately for each PostgreSQL version, such as pg_catcheck, pg_checksums, pg_filedump and repmgr, now have pages on the extensions page, next to the extensions they ship alongside.

There's also a page for the support packages. These are the newer GIS libraries, the Python modules behind tools like pg_statviz and bigquery_fdw, cargo-pgrx, and the other build dependencies. You normally never install them by hand, but now you can see what each one is and which packages use it.

If something is missing or wrong, please open an issue at https://github.com/pgdg-packaging/pgdg-rpms/issues.

bigquery_fdw works again on every distribution we ship in the RPM repo

I packaged bigquery_fdw over 6 years ago. However if you tried to use bigquery_fdw from the PostgreSQL YUM or zypper repositories recently, there is a good chance it did not work: the Python modules it needs could not be imported by the interpreter it runs in. The packages that are in the repositories as of today fix that on RHEL 8, 9 and 10, Fedora 43, 44 and 45, Amazon Linux 2023, and SLES 15 and 16. This post explains what was wrong, what changed, and what (if anything) you need to do.

The full history is in issue #367.


PostgreSQL RPM repository meets AI with pg_statviz

pg_statviz can now ask Claude, a local Ollama model, OpenAI or Gemini to explain your PostgreSQL statistics on every distro we ship it for. Getting there took three days and a few dozen new Python packages :-)

pg_statviz is a small tool that snapshots PostgreSQL's internal statistics and draws charts from them. Its newer releases also hand those numbers to an LLM and ask for an analysis. On Fedora this just worked, because Fedora ships fresh AI SDKs. On everything else, it did not -- until last weekend!

PostgreSQL RPM repository meets AI with pg_statviz

pg_statviz can now ask Claude, a local Ollama model, OpenAI or Gemini to explain your PostgreSQL statistics on every distro we ship it for. Getting there took three days and a few dozen new Python packages :-)

pg_statviz is a small tool that snapshots PostgreSQL's internal statistics and draws charts from them. Its newer releases also hand those numbers to an LLM and ask for an analysis. On Fedora this just worked, because Fedora ships fresh AI SDKs. On everything else, it did not -- until last weekend!

Rust extensions started landing PostgreSQL RPM repository

After trying not to add any Rust packages to the PostgreSQL RPM repository, I finally bit the bullet and pushed pgrx and postgresql_anonymizer to the RPM repos, along with packaging guidelines:

https://github.com/pgdg-packaging/pgdg-rpms/wiki/Packaging-Rust-extensions-(pgrx

Some limitations exist for now:

https://github.com/pgdg-packaging/pgdg-rpms/wiki/Packaging-Rust-extensions-(pgrx)#supported-distributions

Hoping to add RHEL 10.3 and 9.9 support in November.

Enjoy!



Using the PGDG RPM repositories are now way easier!


yum.postgresql.org
and zypp.postgresql.org have a new look!

Users no longer have to navigate through pages on the website. Instead, the front page has a clear layout and easy-to-follow instructions. Just select your OS, version, architecture, and PostgreSQL version, and you'll see instructions that you can copy and paste. There is also a new "copy link" option that you can customize as needed, share in your blog posts, or parse in your automation systems. We now also provide easy installation instructions for the extra packages repository and the non-free repository.

Enjoy!

RHEL / Rocky Linux / AlmaLinux repository RPMs now follow the OS minor version

Since I started building packages separately on each supported RHEL minor version, there has been a repository RPM for each minor version (9.6, 9.7, 9.8, 10.0, ...) in addition to the one for the major versio  (9, 10). All of them share the same package name, and the minor version specific ones are also published in the repository of the latest minor version. As a result, dnf update replaced the major version repository RPM with the one of the latest minor version at that time, which then stayed on that minor version forever, even after the OS moved to a newer one.

I just fixed that issue. Please update the repo RPMs at your earliest convenience. Read the details here:

https://yum.postgresql.org/news/repo-rpms-follow-os-minor-version/

Issue detail: https://github.com/pgdg-packaging/pgdg-rpms/issues/215

I'd like to thank Daryl Herzmann for the report, analysis and testing.



PostgreSQL RPM repo comes to Amazon Linux 2023!

If you run PostgreSQL on EC2, you've had two real choices until now: build from source, or fall back to whatever version Amazon Linux itself carries in its base repos. Neither matches what the rest of the PostgreSQL community gets from yum.postgresql.org — the full extension ecosystem, day-one minor releases, and a consistent layout across distributions.



That gap is closed. Amazon Linux 2023 is now a first-class target of the PGDG YUM repository, with its own build root and its own package tree, right next to Enterprise Linux, Fedora, and SUSE.



Summary first:



 





 



 



 



 



 



Inaugural PostgreSQL Istanbul Meetup was a blast!

We had our first meetup on Thursday, July 2nd, organized by the community people for the community people. Bilge Korkmaz Erdim, Gülçin Yıldırım Jelínek, and I had been working on the meetup idea for a long time, and it finally came together — hosted by Microsoft Turkey at their Levent office. A big thank you to Bilge for helping organize the venue, taking care of food and drinks, and being a great host.


What happened?

This is an incident report, a post-mortem writeup and detailed info how we started supporting multiple RHEL minor versions.

Last month PostgreSQL RPM repos were broken for Rocky Linux and AlmaLinux 9 and 10 users due to an OpenSSL update that Red Hat pushed to versions 10.1 and 9.7, which broke backward compatibility. Actually I broke the repos.


Page 9 of 9, totaling 133 entries