GIN stuck in loop during PITR

Поиск
Список
Период
Сортировка
От Andreas Seltenreich
Тема GIN stuck in loop during PITR
Дата
Msg-id 874pzdsy8p.fsf@gate450.dyndns.org
обсуждение исходный текст
Ответы Re: GIN stuck in loop during PITR
Список pgsql-hackers
I'm just experimenting a bit with GIN, and it is occasionally getting
stuck looping in findParents() during WAL replay.

The attached patch seems to fix it. I also had to set ptr->off as
advertised in the comment above the function to avoid triggering
assertions.

GIN isn't fully transparent to me yet, so it is quite likely that I am
missing something...

regards,
andreas

Index: ginbtree.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/access/gin/ginbtree.c,v
retrieving revision 1.1
diff -c -r1.1 ginbtree.c
*** ginbtree.c    2 May 2006 11:28:54 -0000    1.1
--- ginbtree.c    25 May 2006 18:12:13 -0000
***************
*** 202,208 ****     for(;;) {         buffer = ReadBuffer(btree->index, blkno);         LockBuffer(buffer,
GIN_EXCLUSIVE);
!         page = BufferGetPage(root->buffer);         if ( GinPageIsLeaf(page) )             elog(ERROR, "Lost path");

--- 202,208 ----     for(;;) {         buffer = ReadBuffer(btree->index, blkno);         LockBuffer(buffer,
GIN_EXCLUSIVE);
!         page = BufferGetPage(buffer);         if ( GinPageIsLeaf(page) )             elog(ERROR, "Lost path"); 
***************
*** 224,229 ****
--- 224,230 ----             ptr->blkno = blkno;             ptr->buffer = buffer;             ptr->parent = root; /*
it'smay be wrong, but in next call we will correct */
 
+             ptr->off = offset;             stack->parent = ptr;             return;         }


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

Предыдущее
От: Jeremy Drake
Дата:
Сообщение: Re: 8.1.4 build failure on ICC 9.1
Следующее
От: "Larry Rosenman"
Дата:
Сообщение: Re: Gborg and pgfoundry