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: Peter Geoghegan <pg@bowt.ie>, pgsql-hackers@postgresql.org, david@justatheory.com, Andrew Dunstan <andrew@dunslane.net>
Date: 2025-10-17T20:01:53Z
Lists: pgsql-hackers
On Fri, Oct 17, 2025 at 03:53:09PM -0400, Tom Lane wrote:
> I don't see a race condition here.  What would happen is we make
> some commit, realizing either at the time or later that it involves
> an ABI break.  We verify via some later buildfarm run that the
> break is as-expected (ie the commit doesn't introduce any unwanted
> changes, nor is there anything hanging around from some older commit).
> Then we push an update to the .abi_reference file that points at
> that commit, and the buildfarm starts comparing ABI of branch tip
> to that commit instead of whatever was the reference commit before.
> No later activity breaks the conclusion that we were okay with the ABI
> that that commit creates, nor can any earlier commit cause problems
> so long as we did our due diligence in checking the ABI-break reports.
> 
> In theory, if two ABI-breaking commits go in so close together that
> there was no ABI-checking buildfarm run in between, we might have
> difficulty untangling their effects.  That doesn't seem very likely
> in practice, and even if it happens, so what?  Either we're good with
> the ABI-break report when we see it, or we're not.

Ah, I was thinking of a more proactive approach (e.g., I commit something
that I know introduces ABI breakage, and then I immediately update the ABI
reference file in the next commit).  I like the idea of simply reacting to
the reports and using that as an opportunity to verify it's what we expect.

-- 
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.