Incremental Update: PostgreSQL 19 Beta 1 Announcement Draft (Round 2)
Summary of New Developments
The thread progressed with several new feature inclusion requests, a terminology correction, and Jonathan Katz incorporating feedback into a revised draft. Three new participants contributed substantive suggestions.
New Feature Inclusion Requests
REPACK CONCURRENTLY — Naming Clarification
Álvaro Herrera pointed out a factual error in the draft: there is no "REPACK CONCURRENTLY" command as a standalone entity. PostgreSQL 19 added an ALTER TABLE ... REPACK command with a CONCURRENTLY option (specified in parentheses). The draft apparently listed these as two separate commands, which misrepresents the feature's structure. This is a correctness issue in the announcement rather than a feature promotion request.
LISTEN/NOTIFY Scalability — Proposed Addition
Joel Jacobson advocated for including LISTEN/NOTIFY scalability improvements in the Performance section. His argument is backed by external visibility data: the "Postgres LISTEN/NOTIFY does not scale" blog post from recall.ai was the #3 most popular Postgres-related story on Hacker News in the past year. The fix was directly motivated by this public criticism. Jonathan Katz accepted the suggestion, proposing the phrasing: "There are also improvements for LISTEN/NOTIFY scalability that impact multi-channel workloads." Joel approved this wording.
This is technically interesting because LISTEN/NOTIFY scalability is a known pain point for applications using PostgreSQL as a message/event bus (common in real-time applications, job queues, and change-data-capture patterns). The fix targets multi-channel workloads specifically, suggesting the optimization addresses contention or scanning overhead that scales with the number of distinct channels.
Protocol Greasing — Testing/Compatibility Section
Jelte Fennema-Nio suggested calling out protocol greasing in the "Testing for Bugs & Compatibility" section. During the beta, libpq will request non-existing protocol versions to ensure third-party middleware and connection poolers don't break when PostgreSQL eventually bumps the default protocol version. This is a proactive compatibility testing mechanism borrowed from TLS/HTTP practices (RFC 8701) — deliberately injecting unknown values to prevent ecosystem ossification. This is particularly relevant for the beta announcement since it may cause unexpected behavior in tools that incorrectly reject unknown protocol versions.
Terminology Fix
Tom Lane flagged that "non-aggregate and non-window parameters" in the GROUP BY ALL description misuses "parameters" — a heavily overloaded term in PostgreSQL (GUC parameters, function parameters, prepared statement parameters). He suggested "output columns" instead. Jonathan Katz accepted immediately.
Revised Draft
Jonathan Katz posted an updated full draft on June 4, incorporating the feedback received. The GROUP BY ALL description, LISTEN/NOTIFY mention, and terminology fix are confirmed included.