Re: Test instability when pg_dump orders by OID

Kirill Reshke <reshkekirill@gmail.com>

From: Kirill Reshke <reshkekirill@gmail.com>
To: Noah Misch <noah@leadboat.com>
Cc: Alexander Lakhin <exclusion@gmail.com>, pgsql-hackers@postgresql.org, Robert Haas <robertmhaas@gmail.com>
Date: 2025-08-10T19:20:09Z
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

Attachments

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.

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.

-- 
Best regards,
Kirill Reshke