Re: BUG #17257: (auto)vacuum hangs within lazy_scan_prune()
От | Melanie Plageman |
---|---|
Тема | Re: BUG #17257: (auto)vacuum hangs within lazy_scan_prune() |
Дата | |
Msg-id | CAAKRu_Yj0rLuirkktkH62cAmPoTn+RH-WF6Y63nxwV6CHHmCuA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: BUG #17257: (auto)vacuum hangs within lazy_scan_prune() (Peter Geoghegan <pg@bowt.ie>) |
Ответы |
Re: BUG #17257: (auto)vacuum hangs within lazy_scan_prune()
|
Список | pgsql-bugs |
On Fri, Apr 26, 2024 at 5:28 PM Peter Geoghegan <pg@bowt.ie> wrote: > > On Fri, Apr 26, 2024 at 4:46 PM Melanie Plageman > <melanieplageman@gmail.com> wrote: > > I have a more basic question. How could GlobalVisState->maybe_needed > > going backwards cause a problem with relfrozenxid? Yes, if > > maybe_needed goes backwards, we may not remove a tuple whose xmin/xmax > > are older than VacuumCutoffs->OldestXmin. But, if that tuple's > > xmin/xmax are older than OldestXmin, then wouldn't we freeze it? > > You can't freeze every XID older than OldestXmin. > heap_prepare_freeze_tuple() isn't prepared for HEAPTUPLE_DEAD tuples, > and expects that those will be taken care of by the time it is called. But, the tuple isn't HEAPTUPLE_DEAD -- it's HEAPTUPLE_RECENTLY_DEAD. It will always be HEAPTUPLE_RECENTLY_DEAD in 17 and in <= 16, if HeapTupleSatisfiesVacuum() returns HEAPTUPLE_DEAD, we wouldn't call heap_prepare_freeze_tuple() because of the retry loop. - Melanie
В списке pgsql-bugs по дате отправления: