Re: Horribly slow pg_upgrade performance with many Large Objects

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Nathan Bossart <nathandbossart@gmail.com>
Cc: Nitin Motiani <nitinmotiani@google.com>, Hannu Krosing <hannuk@google.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-07-14T17:28:03Z
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. pg_upgrade: Use COPY for large object metadata.

  2. pg_dump: Fix object-type sort priority for large objects.

  3. pg_upgrade: Mention that we preserve database OIDs in a comment.

  4. pg_upgrade: Preserve database OIDs.

  5. Fix pg_upgrade for oid removal.

Nathan Bossart <nathandbossart@gmail.com> writes:
> Here is what I have staged for commit, which (barring feedback or
> objections) I am planning to do towards the end of the week.

Is it intentional that this does

+#include "catalog/pg_largeobject_metadata.h"
+#include "catalog/pg_shdepend.h"

rather than including the corresponding *_d.h headers?
If so, why?  Our normal coding convention is that frontend
code should only include catalog *_d.h files, since the main
headers might contain frontend-unfriendly declarations.
If there is something we need to expose in these catalogs'
*_d.h headers, we should probably do that.

			regards, tom lane