Re: pg15b2: large objects lost on upgrade

Jonathan S. Katz <jkatz@postgresql.org>

From: "Jonathan S. Katz" <jkatz@postgresql.org>
To: Robert Haas <robertmhaas@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>
Cc: Noah Misch <noah@leadboat.com>, Andrew Dunstan <andrew@dunslane.net>, Bruce Momjian <bruce@momjian.us>, Michael Paquier <michael@paquier.xyz>, Justin Pryzby <pryzby@telsasoft.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>, Shruthi Gowda <gowdashru@gmail.com>
Date: 2022-08-02T19:27:49Z
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. Revert recent changes to 002_pg_upgrade.pl.

  2. Revise test case added in 43746996399541ecb5c7b188725a5f097c15ceae.

  3. Use TRUNCATE to preserve relfilenode for pg_largeobject + index.

  4. Preserve relfilenode of pg_largeobject and its index across pg_upgrade.

  5. Have VACUUM warn on relfrozenxid "in the future".

  6. Set relfrozenxid to oldest extant XID seen by VACUUM.

  7. pg_upgrade: Preserve relfilenodes and tablespace OIDs.

  8. Perform a lot more sanity checks when freezing tuples.

On 8/2/22 3:23 PM, Robert Haas wrote:
> On Tue, Aug 2, 2022 at 1:12 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> Not sure what to make of this, except that maybe the test is telling
>> us about an actual bug of exactly the kind it's designed to expose.
> 
> That could be, but what would the bug be exactly? It's hard to think
> of a more direct way of setting relminmxid and relfrozenxid than
> updating pg_class. It doesn't seem realistic to suppose that we have a
> bug where setting a column in a system table to an integer value
> sometimes sets it to a slightly larger integer instead. If the values
> on the new cluster seemed like they had never been set, or if it
> seemed like they had been set to completely random values, then I'd
> suspect a bug in the mechanism, but here it seems more believable to
> me to think that we're actually setting the correct values and then
> something - maybe autovacuum - bumps them again before we have a
> chance to look at them.

FWIW (and I have not looked deeply at the code), I was thinking it could 
be something along those lines, given 1. the randomness of the 
underlying systems of the impacted farm animals and 2. it was only the 
three mentioned.

> I'm not quite sure how to rule that theory in or out, though.

Without overcomplicating this, are we able to check to see if autovacuum 
ran during the course of the test?

Jonathan