Neues vom PostgreSQL Planet
Nikolay Samokhvalov: #PostgresMarathon 2-005: More LWLock:LockManager benchmarks for Postgres 18
In 2023-2024, after incidents that multiple customers of PostgresAI experienced, when production nodes were down because of LWLock:LockManager contention, we studied it in synthetic environments.
At that time, we managed to reproduce the issue only on large machines – ~100 or more vCPUs.
With PG18 release, this question started to bother me again: can we experience LWLock:LockManager on smaller machines?
Dave Stokes: Loading The Titanic Passenger Data Into PostgreSQL With DBeaver Part 1
The Sinking of the RMS Titanic in 1912 has shocked and entertained for over a century. I will admit to being shocked to find a GitHub Repo with a CSV formatted file with the passenger list. This file is an interesting glimpse into the lives of the folks who sailed on the ill fated ship so long ago. And interesting datasets are always good for examples. I had been looking for a project to show off what I call 'Lifting and Shifting' but others call ETL.
Hans-Juergen Schoenig: How it all began - 25 years of CYBERTEC
This year, CYBERTEC is celebrating 25 years since its founding in 2000 by our CEO Hans-Jürgen Schönig. In light of this, we have decided to hold an interview with the man himself to get some insights into how the company started and where it might be going. In addition to this, Hans-Jürgen made some interesting points about leading a business and the importance and future of PostgreSQL as a whole, so buckle up and prepare for some glimpses into the thought processes of an accomplished entrepreneur in our 2-part blog posting.
Nikolay Samokhvalov: #PostgresMarathon 2-003: The roots of LWLock:LockManager
As we discussed, Lock Manager manages heavyweight locks – various kinds of them (various modes, various levels of granularity). These locks are released only at the end of the transaction.
In the most trivial case, when you run a SELECT on a table, this table is locked with AccessShareLock. And not only the table, but all its indexes, which happens during planning time (always happens unless you use prepared statements). This is to protect against concurrent DROP. All of these are released only when the transaction ends.
Boriss Mejias: Contributions for week 39, 2025
The PostgreSQL 18 Press Kit contributors team is formed by translators from different countries covering an important set of languages. Here we have the list for the PostgreSQL 18 release. More information can be found here:
Ian Barwick: PgPedia Week, 2025-10-05
Gabriele Bartolini: CNPG Recipe 22 - Leveraging the New Supply Chain and Image Catalogs
This CNPG Recipe explores the latest enhancements to CloudNativePG’s software supply chain and image management. Learn how our new, fully controlled build process—complete with Snyk scanning, image signing, and SBOMs—delivers smaller, more secure PostgreSQL images. We also detail how to leverage the newly streamlined image catalogs for simplified, declarative cluster management and safer fleet-wide upgrades in Kubernetes.
Jeremy Schneider: Testing CloudNativePG Preferred Data Durability
This is the third post about running Jepsen against CloudNativePG. Earlier posts:
Nikolay Samokhvalov: #PostgresMarathon 2-002: Relation-level locks
Let's talk about relation-level locks and various confusions, surprises and what is worth to remember in practice.
The key page in Postgres docs describing relation-level locks is here: https://www.postgresql.org/docs/current/explicit-locking.html#LOCKING-TABLES
Jeremy Schneider: Data Safety on a Budget
Many experienced DBAs joke that you can boil down the entire job to a single rule of thumb: Don’t lose your data. It’s simple, memorable, and absolutely true – albeit a little oversimplified.
Mark Porter’s Cultural Hint “The Onion of our Requirements” conveys the same idea with a lot more accuracy:
Nikolay Samokhvalov: #PostgresMarathon 2-001: Lightweight and heavyweight locks
To warm up, let's talk about lightweight and heavyweight locks (or "regular locks" or just "locks").
I'm using these materials:
Jesse Soyland: Postgres Migrations Using Logical Replication
Moving a Postgres database isn’t a small task. Typically for Postgres users this is one of the biggest projects you’ll undertake. If you’re migrating for a new Postgres major version or moving to an entirely new platform or host, you have a couple options:
Shayon Mukherjee: Exploring PostgreSQL to Parquet archival for JSON data with S3 range reads
Jeremy Sztavinovszki: Bringing etcd to the database with Rust and pgrx
PostgreSQL is a very versatile database. It has countless ways of bringing different functionalities to an already very sophisticated piece of software. Today, I’m going to show you how to use Rust and pgrx to bring etcd into your PostgreSQL database through a nice little interface called Foreign Data Wrappers.
(an image representing rust, etcd and postgres working together. Drawn by Jeremy Sztavinovszki)
Jeremy Schneider: Postgres Replication Links
Our platform team has a regular meeting where we often use ops issues as a springboard to dig into Postgres internals. Great meeting today – we ended up talking about the internal architecture of Postgres replication. Sharing a few high-quality links from our discussion:
Alexander Kukushkin’s conference talk earlier this year, which includes a great explanation of how replication works
Hubert 'depesz' Lubaczewski: Waiting for PostgreSQL 19 – Add GROUP BY ALL.
Daniel Vérité: Pipelining in psql (PostgreSQL 18)
Dave Stokes: PostgreSQL 18 Old & New
Learning Structured Query Language can be frustrating when double-checking that what you wanted to have done is actually what was done. PostgreSQL 18 has 'OLD and NEW support for RETURNING clauses in INSERT, UPDATE, DELETE, and MERGE commands'. Now you can get instant feedback.
The addition of the RETURNING clause in the previous version made MERGE much easier to use. Now it makes other commands easier.
To demonstrate, let's create a table with one column that is designated as a unique, primary key integer and insert a value.
Laurenz Albe: How to do UPDATE ... LIMIT in PostgreSQL
If you are reading this hoping that PostgreSQL finally got UPDATE ... LIMIT like MySQL, I have to disappoint you. The LIMIT clause is not yet supported for DML statements in PostgreSQL. If you want to UPDATE only a limited number of rows, you have to use workarounds. This article will describe how to do this and how to avoid the pitfalls and race condition you may encounter. Note that most of the following also applies to DELETE ... LIMIT!

