Re: Bogus assertion in multixact.c?

Поиск
Список
Период
Сортировка
От Alvaro Herrera
Тема Re: Bogus assertion in multixact.c?
Дата
Msg-id 20050503184339.GD12359@dcc.uchile.cl
обсуждение исходный текст
Ответ на Bogus assertion in multixact.c?  (Heikki Linnakangas <hlinnaka@iki.fi>)
Список pgsql-hackers
On Tue, May 03, 2005 at 09:33:30PM +0300, Heikki Linnakangas wrote:
> There's an assertion in multixact.c, MultiXactIdExpand function, line 273:
> 
>        Assert(!TransactionIdEquals(multi, xid));
> 
> where multi is a MultiXactId and xid is a TransactionId.
> 
> Isn't this bogus? If I understand the code correctly, multixactids and 
> regular xids live in completely separate id spaces. Therefore a comparison 
> between them makes no sense.

Well :-)  actually that particular MultiXactId may be a TransactionId.
(See the isMulti param, and comments at the beggining of the function.)
This ugliness is there to support the notion of locking a tuple with
either a TransactionId (non-contention case) or a MultiXactId
(concurrent case.)

We require MultiXactId to be equivalent to TransactionId anyway, because
we store Multis on a tuple's Xmax.

Congratulations for spotting that :-)  (Are you using a source checker
tool?)

-- 
Alvaro Herrera (<alvherre[@]dcc.uchile.cl>)
"No hay cielo posible sin hundir nuestras raícesen la profundidad de la tierra"                        (Malucha Pinto)


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Bogus assertion in multixact.c?
Следующее
От: Stephen Frost
Дата:
Сообщение: Re: [pgsql-advocacy] Increased company involvement