First draft of PG 19 release notes

First seen: 2026-04-15 01:18:57+00:00 · Messages: 57 · Participants: 19

Latest Update

2026-05-06 · opus 4.7

Thread Overview

This thread nominally concerns Bruce Momjian's first draft of the PostgreSQL 19 release notes (212 feature entries, versus a recent average of 200), but it quickly bifurcates into two very different discussions:

  1. Routine editorial corrections — typos, wrong author attributions, reclassifications between sections (Optimizer vs. General Performance), syntax updates reflecting post-commit renames (e.g., EXCEPT TABLEEXCEPT (...)), and requests to add or drop particular items.
  2. A recurring policy conflict about (a) how Co-authored-by: trailers should map to release-note attribution, and (b) whether performance improvements should be included in the release notes at all.

The second thread — especially the exchange with Andres Freund — is the substantive one. It exposes a years-long structural disagreement between Bruce's editorial philosophy and the expectations of core committers.

The Co-authored-by / Author attribution problem

Bruce applied the rule (documented on the wiki under Commit_Message_Guidance): "If no 'Author' or 'Co-authored-by' is listed, the committer is assumed to be the author." He treats Author: and Co-authored-by: as equivalent for release-note credit. Jacob Champion confirms this is the intended pattern: a missing Author: trailer means the committer is the primary author, and Co-authored-by: names everyone else.

Michael Banck questions why a bare Co-authored-by: (with no Author:) would ever make sense if the committer isn't also credited — implying the committer should always be listed as an author in that case. Bruce agrees with the logic but notes he already lost this argument in January 2025 and is unwilling to relitigate. His frustration is visible: the wiki text was quietly revised between January 2025 and March 2026, and he now operates under whatever the latest consensus was, even when it produces anomalies.

The concrete instance triggering this was Ashutosh Bapat being listed as sole author of the ShmemRequestStruct() simplification where Heikki Linnakangas (committer, no explicit Author: trailer) was the primary author. Under the current rule, Heikki was implicitly credited as author; Ashutosh's correction (to use his suggested text) resolved that particular item.

The performance-notes policy dispute (the substantive fight)

Bruce's long-standing wiki policy is:

Performance improvements are mentioned in the release notes if they are user-visible (e.g., new syntax) or significant enough to enable new workloads.

He applied this to reject David Geier's GIN build-speed improvements (measured at 1.12x–1.17x on current master because the most impactful patches in the set haven't landed), saying they'd be added once all patches are in — or not at all if they only amount to ~15%.

Andres Freund pushed back very sharply: a 12–17% index build speedup is "material" and could drive upgrade decisions. He called the policy depressing enough that he stopped reading the release notes, and provided a list of eight committers (Tom Lane, Alvaro Herrera, David Rowley, Melanie Plageman, Joe Conway, Jelte Fennema-Nio, Peter Geoghegan, Robert Haas, Noah Misch, and himself) who have raised this exact complaint in prior release cycles, going back to at least 9.5. David Rowley reinforced the point with the tidstore example: it was initially omitted from PG 17 notes and ended up being the headline feature of that release.

Bruce's defense is essentially operational rather than philosophical:

David Rowley offered constructive procedural suggestions:

Andres's final concession: it's fine if Bruce doesn't want to write performance entries, but the policy shouldn't be "we don't include them." Bruce accepted this and generated a file of 1,556 excluded commits (produced with awk from the XML commit hashes), documented as step 12 on the wiki, so others can propose additions. This is a meaningful procedural shift: the process is moving from opt-in (Bruce decides what to include) to opt-out (everything is visible and the community prunes).

Technical content surfaced in corrections

Several corrections point to genuinely important PG 19 internals changes that warrant release-note mention:

Whose opinions carry weight

Design tradeoffs

The thread exposes a genuine unresolved tension:

  1. Audience model: Bruce writes for "general Postgres users" who will be overwhelmed by detail. Andres writes for DBAs and application owners who need to decide whether an upgrade solves their problem. Both audiences are legitimate; the release notes currently only serve the first.
  2. Labor allocation: curating 212 entries is already a heavy job. Doubling it to include every non-trivial performance commit is not feasible for one person. But requiring committers to include benchmark numbers and explicit "please mention" flags distributes the load.
  3. Discoverability vs. noise: Rowley's suggestion of per-entry icons (feature / perf / behavioral change) would let readers filter without forcing Bruce to shrink the list.

The 1556-excluded-commits list Bruce produced is the first concrete procedural artifact that could break this deadlock. Whether the community actually uses it to propose additions is the open question for PG 19's final release-notes quality.