Re: pg_upgrade: transfer pg_largeobject_metadata's files when possible

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Nathan Bossart <nathandbossart@gmail.com>
Cc: Michael Paquier <michael@paquier.xyz>, Tom Lane <tgl@sss.pgh.pa.us>, Nitin Motiani <nitinmotiani@google.com>, Hannu Krosing <hannuk@google.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-02-05T18:02:17Z
Lists: pgsql-hackers
Hi,

On 2026-02-05 11:36:00 -0600, Nathan Bossart wrote:
> On Thu, Feb 05, 2026 at 11:19:46AM -0500, Andres Freund wrote:
> > It certainly seems better than what we do now.  Still feels pretty grotty and
> > error prone to me that we fill the catalog table and then throw the contents
> > out.
> 
> Before I go any further with this approach, I thought of something else we
> could do that I believe is worth considering...
> 
> As of commit 3bcfcd815e, the only reason we are dumping any of
> pg_largeobject_metadata at all is to avoid an ERROR during COMMENT ON or
> SECURITY LABEL ON because the call to LargeObjectExists() in
> get_object_address() returns false.  If we bypass that check in
> binary-upgrade mode, we can skip dumping pg_largeobject_metadata entirely.

Yea, I think that's worth considering.  As you say downthread, the check for
binary upgrade should probably be moved, but that's details.

Upthread I also wondering why we do all the work in getLOs() if we don't
actually need most of it (only if there are comments or labels).  Right now
that's a very slow and very memory intensive part of doing an upgrade of a
system with a lot of binary upgrades.  Do we need *any* of that if we go the
path you suggest?

Greetings,

Andres Freund



Commits

  1. pg_upgrade: Use COPY for LO metadata for upgrades from < v12.

  2. pg_upgrade: Fix handling of pg_largeobject_metadata.

  3. pg_upgrade: Transfer pg_largeobject_metadata's files when possible.

  4. Rearrange pg_dump's handling of large objects for better efficiency.

  5. Expand AclMode to 64 bits

  6. Fix pg_upgrade for oid removal.