Re: Test instability when pg_dump orders by OID

Noah Misch <noah@leadboat.com>

From: Noah Misch <noah@leadboat.com>
To: Kirill Reshke <reshkekirill@gmail.com>
Cc: Alexander Lakhin <exclusion@gmail.com>, pgsql-hackers@postgresql.org, Robert Haas <robertmhaas@gmail.com>
Date: 2025-08-23T05:20:19Z
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 Mon, Aug 11, 2025 at 12:20:09AM +0500, Kirill Reshke wrote:
> On Sun, 10 Aug 2025 at 21:37, Noah Misch <noah@leadboat.com> wrote:
> > Thanks.  Could you make src/test/regress create regression database objects so
> > the code addition has coverage?  Using pg_signal_backend and
> > pg_read_all_settings as the default ACL role names should avoid that suite's
> > limitations.  (The suite must run under any role name and must drop any roles
> > it creates, so it can't assume any particular non-system role name survives
> > the suite.)
> 
> Here is my attempt at implementing necessary legwork. It's v3 because
> I accidentally cleared the CC list in my previous attempt. Noah kindly
> explained to me how additions to the regress test will cause pg_dump
> logic to be tested as well.
> TIL 002_pg_upgarde.pl runs a regression suite, so if we create any
> database objects in it, it will end up being dumped and restored in
> that test.
> So, I checked that without  changes in pg_dump_sort.c, 002_pg_upgarde
> fails and with changes it does not.

Great.

> PFA. I am not horribly sure about my additions to the
> `src/test/regress/sql/privileges.sql` file, maybe appending SQL to the
> end of the file is not the best option and there is a better place.

I like how src/test/regress/sql/collate.icu.utf8.sql puts that kind of thing
just after cleanup, so I put it there.  Pushed as b61a5c4 with a few other
cosmetic changes.  Thanks.