Re: Test instability when pg_dump orders by OID

Noah Misch <noah@leadboat.com>

From: Noah Misch <noah@leadboat.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: pgsql-hackers@postgresql.org
Date: 2025-08-04T00:03:21Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Rewrite previous commit's test for TestUpgradeXversion compatibility.

  2. Sort DO_DEFAULT_ACL dump objects independent of OIDs.

  3. Remove, from stable branches, the new assertion of no pg_dump OID sort.

  4. Sort dump objects independent of OIDs, for the 7 holdout object types.

  5. pg_dump: provide a stable sort order for rules.

  6. pg_dump: include comments on not-null constraints on domains, too

  7. Verify roundtrip dump/restore of regression database

  8. In pg_dump, use simplehash.h to look up dumpable objects by OID.

  9. Tweak pg_dumpall to add GRANT CONNECT ON DATABASE ... TO PUBLIC when dumping

  10. Restructure operator classes to allow improved handling of cross-data-type

  11. First phase of project to use fixed OIDs for all system catalogs and

  12. Tweak pg_dump to say GRANT ALL when appropriate, rather than enumerating

On Fri, Jul 25, 2025 at 02:01:01PM -0400, Robert Haas wrote:
> On Thu, Jul 24, 2025 at 10:27 PM Noah Misch <noah@leadboat.com> wrote:
> > I regret missing those in v1.  I've attached v2, including branch-specific
> > patches.  I'll first need to back-patch 350e6b8, which fixed sorting of CREATE
> > RULE, to v17 and earlier.  Since 350e6b8 is conflict-free all the way back to
> > v13, I'm not attaching it.
> 
> Back-patching 350e6b8 to facilitate back-patching this seems OK. I did
> a read-through of dobjcomp20-disambiguate-v2.patch and have no further
> review comments. I did not read through the back-patched versions on
> the assumption that back-porting was straightforward enough that a
> separate review was not required.

Pushed as 0decd5e.  v14 supports binary-upgrade from v8.3 and regular dump
from v8.0.  That required two other changes.  First, pg_opclass.opcmethod had
name opcamid until v8.3 (commit a78fcfb).  Accounting for both names was
trivial.  Second, pg_am first had fixed OID AccessMethodRelationId in v8.1
(commit 7c13781).  The find*ByOid functions have been assuming fixed catalog
OIDs since v15's commit 92316a4.  The $SUBJECT commit added
findAccessMethodByOid() to all branches, so I changed the v14/v13
findAccessMethodByOid() to be more like v14/v13 findOprByOid(), which doesn't
assume AccessMethodRelationId.  If folks want more details, let me know.