Re: abi-compliance-check failure due to recent changes to pg_{clear,restore}_{attribute,relation}_stats()

Nathan Bossart <nathandbossart@gmail.com>

From: Nathan Bossart <nathandbossart@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-hackers@postgresql.org, david@justatheory.com, Andrew Dunstan <andrew@dunslane.net>
Date: 2025-10-17T19:11:10Z
Lists: pgsql-hackers

Attachments

On Fri, Oct 17, 2025 at 02:45:12PM -0400, Tom Lane wrote:
> Nathan Bossart <nathandbossart@gmail.com> writes:
>> On Fri, Oct 17, 2025 at 01:15:20PM -0400, Tom Lane wrote:
>>> FWIW, I favor the approach of having an in-tree, per-branch file
>>> containing the commit hash of a commit that is the current ABI
>>> reference for that branch.
> 
>> I'm new to the topic, but IMHO the per-branch file approach is by far the
>> best approach.  Not only is it much more flexible, but we could even use it
>> as a centralized list of ABI breaks for a given branch with justification
>> for each.  I can't think of any strong advantages of keeping this stuff in
>> git metadata.  git itself uses a file for blame.ignoreRevsFile...
> 
> Good idea.  We'd have to allow comments in the file, but that's
> probably a good thing anyway.

I've attached a first try.  You'll notice that I have borrowed heavily from
.git-blame-ignore-revs.  Some other things that might be worthwhile:

* Add commentary about when this file is needed (i.e., after the .0).
* Add instructions for creating file on new stable branch to
RELEASE_CHANGES.
* Adjust format for readability.  It is a bit comment-heavy at the moment.

Anything else?  I suppose this idea is entirely dependent on the
maintainers of the abi-compliance-check code to adapt to it, so we'll need
buy-in from them, too.

-- 
nathan

Commits

  1. Add commit 24f6c1bd4 to v17 .abi-compliance-history.

  2. Add .abi-compliance-history to back-branches.

  3. Add reminder to create .abi-compliance-history.

  4. Update .abi-compliance-history file.

  5. Add .abi-compliance-history to v18 branch.

  6. Fix thinko in commit 7d129ba54.

  7. Fix lookups in pg_{clear,restore}_{attribute,relation}_stats().

  8. Add defenses against unexpected changes in the NodeTag enum list.