Re: pg15b2: large objects lost on upgrade

Jonathan S. Katz <jkatz@postgresql.org>

From: "Jonathan S. Katz" <jkatz@postgresql.org>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Robert Haas <robertmhaas@gmail.com>, 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-02T20:20:25Z
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:51 PM, Tom Lane wrote:
> "Jonathan S. Katz" <jkatz@postgresql.org> writes:
>> On 8/2/22 3:39 PM, Tom Lane wrote:
>>>> I am not in favor of disabling autovacuum in the test: ordinary
>>>> users are not going to do that while pg_upgrade'ing, so it'd make
>>>> the test less representative of real-world usage, which seems like
>>>> a bad idea.  We could either drop this particular check again, or
>>>> weaken it to allow new relfrozenxid >= old relfrozenxid, likewise
>>>> relminxid.
> 
>> The test does look helpful and it would catch regressions. Loosely
>> quoting Robert on a different point upthread, we don't want to turn off
>> the alarm just because it's spuriously going off.
>> I think the weakened check is OK (and possibly mimics the real-world
>> where autovacuum runs), unless you see a major drawback to it?
> 
> I also think that ">=" is a sufficient requirement.  It'd be a
> bit painful to test if we had to cope with potential XID wraparound,
> but we know that these installations haven't been around nearly
> long enough for that, so a plain ">=" test ought to be good enough.
> (Replacing the simple "eq" code with something that can handle that
> doesn't look like much fun, though.)

...if these systems are hitting XID wraparound, we have another issue to 
worry about.

I started modifying the test to support this behavior, but thought that 
because 1. we want to ensure the OID is still equal and 2. in the 
examples you showed, both relfrozenxid or relminxid could increment, we 
may want to have the individual checks on each column.

I may be able to conjure something up that does the above, but it's been 
a minute since I wrote anything in Perl.

Jonathan