Re: [HACKERS] Open 6.5 items

Поиск
Список
Период
Сортировка
От Vadim Mikheev
Тема Re: [HACKERS] Open 6.5 items
Дата
Msg-id 375686DA.B584296E@krs.ru
обсуждение исходный текст
Ответ на RE: [HACKERS] Open 6.5 items  ("Hiroshi Inoue" <Inoue@tpf.co.jp>)
Ответы Re: [HACKERS] Open 6.5 items
RE: [HACKERS] Open 6.5 items
Список pgsql-hackers
Hiroshi Inoue wrote:
> 
> However,when I did vacuum while testing I got the following error
> message.
>         ERROR:  Child itemid marked as unused
> 
> TransactionId-s of tuples in update chain may be out of order.

1. Fix and explanation in xact.c:CommitTransaction():
    RecordTransactionCommit();
   /*    * Let others know about no transaction in progress by me.    * Note that this must be done _before_ releasing
lockswe hold    * and SpinAcquire(ShmemIndexLock) is required - or bad (too high)    * XmaxRecent value might be used
byvacuum: UPDATE with xid 0 is    * blocked by xid 1' UPDATE, xid 1 is doing commit while xid 2    * gets snapshot - if
xid2' GetSnapshotData sees xid 1 as running    * then it must see xid 0 as running as well or XmaxRecent = 1    * might
beused by concurrent vacuum causing    *         ERROR:  Child itemid marked as unused    * This bug was reported by
HiroshiInoue and I was able to reproduce    * it with 3 sessions and gdb.  - vadim 06/03/99    */   if (MyProc != (PROC
*)NULL)   {       SpinAcquire(ShmemIndexLock);       MyProc->xid = InvalidTransactionId;       MyProc->xmin =
InvalidTransactionId;      SpinRelease(ShmemIndexLock);   }
 

2. It was possible to get two versions of the same row from  select. Fixed by moving MyProc->xid assignment from
StartTransaction()inside GetNewTransactionId().
 

Thanks, Hiroshi! And please run your tests - I used just 
3 sessions and gdb.

Vadim


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

Предыдущее
От: Dmitry Samersoff
Дата:
Сообщение: Re: [HACKERS] PID of backend
Следующее
От: Tom Lane
Дата:
Сообщение: Re: [HACKERS] Re: Freezing docs for v6.5