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 по дате отправления: