Re: POC: make mxidoff 64 bits
От | Heikki Linnakangas |
---|---|
Тема | Re: POC: make mxidoff 64 bits |
Дата | |
Msg-id | 2bc58592-9d74-4af0-bdd1-1a88e8683f7c@iki.fi обсуждение исходный текст |
Ответ на | POC: make mxidoff 64 bits (Maxim Orlov <orlovmg@gmail.com>) |
Ответы |
Re: POC: make mxidoff 64 bits
|
Список | pgsql-hackers |
On 27/12/2024 19:09, Maxim Orlov wrote: > > On Wed, 18 Dec 2024 at 13:21, Heikki Linnakangas <hlinnaka@iki.fi > <mailto:hlinnaka@iki.fi>> wrote: > Does the pg_upgrade code work though, if you have that buggy situation > where oldestOffsetKnown == false ? ... > > > > if (!TransactionIdIsValid(*xactptr)) > > { > > /* Corner case 3: we must be looking at > unused slot zero */ > > Assert(offset == 0); > > continue; > > } > > After upgrade, this corner case 3 would *not* happen on offset == 0. So > looks like we're still missing test coverage for this upgrade corner > case. > > Am I understanding correctly that you want to have a test corresponding > to the buggy 9.3 and 9.4 era versions? No, those were two different things. I think there might be two things wrong here: 1. I suspect pg_upgrade might not correctly handle the situation where oldestOffsetKnown==false, and 2. The above assertion in "corner case 3" would not hold. It seems that we don't have a test case for it, or it would've hit the assertion. Now that I think about it, yes, a test case for 1. would be good too. But I was talking about 2. > Do you think we could imitate this scenario on a current master branch > like that: > 1) generate a couple of offsets segments for the first table; > 2) generate more segments for a second table; > 3) drop first table; > 4) stop pg cluster; > 5) remove pg_multixact/offsets/0000 > 6) upgrade? I don't remember off the top of my head. It might be best to just refuse the upgrade if oldestOffsetKnown==false. It's a very ancient corner case. It seems reasonable to require you to upgrade to a newer minor version and run VACUUM before upgrading. IIRC that sets oldestOffsetKnown. -- Heikki Linnakangas Neon (https://neon.tech)
В списке pgsql-hackers по дате отправления: