Re: [HACKERS] [PATCH] Assert that the correct locks are held whencalling PageGetLSN()
| От | Alvaro Herrera |
|---|---|
| Тема | Re: [HACKERS] [PATCH] Assert that the correct locks are held whencalling PageGetLSN() |
| Дата | |
| Msg-id | 20180109182624.khjdclnzkevekm2a@alvherre.pgsql обсуждение |
| Ответ на | Re: [HACKERS] [PATCH] Assert that the correct locks are held whencalling PageGetLSN() (Michael Paquier <michael.paquier@gmail.com>) |
| Ответы |
Re: [HACKERS] [PATCH] Assert that the correct locks are held whencalling PageGetLSN()
|
| Список | pgsql-hackers |
So ... gistdoinsert can sometimes hold an exclusive lock, so we could do
this instead:
diff --git a/src/backend/access/gist/gist.c b/src/backend/access/gist/gist.c
index 0e499598a4..2ea19d2683 100644
--- a/src/backend/access/gist/gist.c
+++ b/src/backend/access/gist/gist.c
@@ -566,7 +566,8 @@ gistdoinsert(Relation r, IndexTuple itup, Size freespace, GISTSTATE *giststate)
}
stack->page = (Page) BufferGetPage(stack->buffer);
- stack->lsn = PageGetLSN(stack->page);
+ stack->lsn = xlocked ?
+ PageGetLSN(stack->page) : BufferGetLSNAtomic(stack->buffer);
Assert(!RelationNeedsWAL(state.r) || !XLogRecPtrIsInvalid(stack->lsn));
I suppose it doesn't really hurt all that much. I admit I'm a bit
nervous about the fact that code is uncovered.
--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
В списке pgsql-hackers по дате отправления: