Re: Bug in autovacuum.c?

Поиск
Список
Период
Сортировка
От Robert Haas
Тема Re: Bug in autovacuum.c?
Дата
Msg-id AANLkTimQX_ag=xt_6bO5sEbKmLn-RUWO3hSdr3uqesAJ@mail.gmail.com
обсуждение исходный текст
Ответ на Bug in autovacuum.c?  (Bruce Momjian <bruce@momjian.us>)
Ответы Re: Bug in autovacuum.c?  (Alvaro Herrera <alvherre@commandprompt.com>)
Список pgsql-hackers
On Thu, Mar 31, 2011 at 12:17 PM, Bruce Momjian <bruce@momjian.us> wrote:
> Looking over the autovacuum.c code, I see:
>
>    /*
>     * Determine the oldest datfrozenxid/relfrozenxid that we will allow to
>     * pass without forcing a vacuum.  (This limit can be tightened for
>     * particular tables, but not loosened.)
>     */
>    recentXid = ReadNewTransactionId();
>    xidForceLimit = recentXid - autovacuum_freeze_max_age;
>    /* ensure it's a "normal" XID, else TransactionIdPrecedes misbehaves */
>    if (xidForceLimit < FirstNormalTransactionId)
>        xidForceLimit -= FirstNormalTransactionId;
>
> This last line doesn't look right to me;  should it be:
>
>        xidForceLimit = FirstNormalTransactionId;

That would probably work, but the existing coding actually makes more
sense.  It's essentially trying to scan backwards by
autovacuum_freeze_max_age XIDs through the circular XID space.  But
the XID space isn't actually circular, because there are 3 special
values.  So if we land on one of those values we want to skip backward
by 3.  Here FirstNormalTransactionId doesn't represent itself, but
rather the number of special XIDs that exist.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


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

Предыдущее
От: Gurjeet Singh
Дата:
Сообщение: Re: Problem with pg_upgrade?
Следующее
От: Brendan Jurd
Дата:
Сообщение: Re: [GENERAL] Date conversion using day of week