Re: Test instability when pg_dump orders by OID
Robert Haas <robertmhaas@gmail.com>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Rewrite previous commit's test for TestUpgradeXversion compatibility.
- fb75e1ef7212 13.23 landed
- 22c6a44f01fd 14.20 landed
- 090c9c9608b3 15.15 landed
- c6dca7c3dd65 18.0 landed
- 49a09c6c51c0 17.7 landed
- 412d29fd2166 16.11 landed
- ad4412480d3f 19 (unreleased) landed
-
Sort DO_DEFAULT_ACL dump objects independent of OIDs.
- 4948bb9df421 14.20 landed
- 05341b2e9914 13.23 landed
- fbf967e996dd 15.15 landed
- e8d22095e5df 17.7 landed
- e68fa9a830f0 16.11 landed
- 7652142f4c14 18.0 landed
- b61a5c4bed7d 19 (unreleased) landed
-
Remove, from stable branches, the new assertion of no pg_dump OID sort.
- bc05590c7fcd 13.22 landed
- 7846f470964c 14.19 landed
- 70637d7ae0a2 15.14 landed
- 28e7252e450a 17.6 landed
- 216683296101 16.10 landed
- 0d2734eac345 18.0 landed
-
Sort dump objects independent of OIDs, for the 7 holdout object types.
- 04bc2c42f765 13.22 landed
- 7ee7c1cd389e 14.19 landed
- 22f126da6cce 15.14 landed
- 1ca1889ea6a3 17.6 landed
- 0ac1581c3f2d 16.10 landed
- c0ae03384fa3 18.0 landed
- 0decd5e89db9 19 (unreleased) landed
-
pg_dump: provide a stable sort order for rules.
- cc9a62c51a18 13.22 landed
- 25388fb2cb84 14.19 landed
- e99010cbd8e2 15.14 landed
- 9affed26349a 16.10 landed
- 5dd4957b28df 17.6 landed
-
pg_dump: include comments on not-null constraints on domains, too
- da71717f0a7c 19 (unreleased) cited
-
Verify roundtrip dump/restore of regression database
- 172259afb563 18.0 cited
-
In pg_dump, use simplehash.h to look up dumpable objects by OID.
- 92316a4582a5 15.0 cited
-
Tweak pg_dumpall to add GRANT CONNECT ON DATABASE ... TO PUBLIC when dumping
- 2ee56b6a3ab8 8.3.0 cited
-
Restructure operator classes to allow improved handling of cross-data-type
- a78fcfb51243 8.3.0 cited
-
First phase of project to use fixed OIDs for all system catalogs and
- 7c13781ee7a6 8.1.0 cited
-
Tweak pg_dump to say GRANT ALL when appropriate, rather than enumerating
- 1b68bcfad33e 7.2.1 cited
On Fri, Jul 18, 2025 at 3:17 PM Noah Misch <noah@leadboat.com> wrote:
> > This comment is useful, but if I were to be critical, it does a better
> > job saying what this field isn't than what it is.
>
> True. I've changed it to this:
That looks great.
> - /* To have a stable sort order, break ties for some object types */
> + /*
> + * To have a stable sort order, break ties for some object types. Most
> + * catalogs have a natural key, e.g. pg_proc_proname_args_nsp_index.
> + * Where the above "namespace" and "name" comparisons don't cover all
> + * natural key columns, compare the rest here.
> + *
> + * The natural key usually refers to other catalogs by surrogate keys.
> + * Hence, this translates each of those references to the natural key of
> + * the referenced catalog. That may descend through multiple levels of
> + * catalog references. For example, to sort by pg_proc.proargtypes,
> + * descend to each pg_type and then further to its pg_namespace, for an
> + * overall sort by (nspname, typname).
> + */
I really like this.
> + * Sort by encoding, per pg_collation_name_enc_nsp_index. Wherever
> + * this changes dump order, restoring the dump fails anyway. CREATE
> + * COLLATION can't create a tie for this to break, because it imposes
> + * restrictions to make (nspname, collname) uniquely identify a
> + * collation within a given DatabaseEncoding. While
> + * pg_import_system_collations() can create a tie, pg_dump+restore
> + * fails after pg_import_system_collations('my_schema') does so.
> + * There's little to gain by ignoring one natural key column on the
> + * basis of those limitations elsewhere, so respect the full natural
> + * key like we do for other object types.
This is also good. I suggest s/Wherever/Technically, this is not
necessary, because wherever/ and s/There's/However, there's/.
--
Robert Haas
EDB: http://www.enterprisedb.com