Re: freeze cannot be finished

Поиск
Список
Период
Сортировка
От Sergey Burladyan
Тема Re: freeze cannot be finished
Дата
Msg-id 87txffkgeq.fsf@home.progtech.ru
обсуждение исходный текст
Ответ на Re: freeze cannot be finished  (Jeff Janes <jeff.janes@gmail.com>)
Ответы Re: freeze cannot be finished  (Jeff Janes <jeff.janes@gmail.com>)
Список pgsql-general
Jeff Janes <jeff.janes@gmail.com> writes:

If I not mistaken, looks like lazy_scan_heap() called from lazy_vacuum_rel()
(see [1]) skip pages, even if it run with scan_all == true, lazy_scan_heap()
does not increment scanned_pages if lazy_check_needs_freeze() return false, so
if this occurred at wraparound vacuum it cannot update pg_class, because
pg_class updated via this code:

    new_frozen_xid = FreezeLimit;
    if (vacrelstats->scanned_pages < vacrelstats->rel_pages)
        new_frozen_xid = InvalidTransactionId;

    vac_update_relstats(onerel,
                        new_rel_pages,
                        new_rel_tuples,
                        new_rel_allvisible,
                        vacrelstats->hasindex,
                        new_frozen_xid);

so i think in our prevent wraparound vacuum vacrelstats->scanned_pages always
less than vacrelstats->rel_pages and pg_class relfrozenxid never updated.

[1] src/backend/commands/vacuumlazy.c

--
Sergey Burladyan


В списке pgsql-general по дате отправления:

Предыдущее
От: David Johnston
Дата:
Сообщение: Re: expression index not used within function
Следующее
От: Jeff Janes
Дата:
Сообщение: Re: freeze cannot be finished