From: | Michael Paquier <michael(dot)paquier(at)gmail(dot)com> |
---|---|
To: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
Cc: | Asim Praveen <apraveen(at)pivotal(dot)io>, Jacob Champion <pchampion(at)pivotal(dot)io>, Robert Haas <robertmhaas(at)gmail(dot)com>, PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>, Kevin Grittner <kgrittn(at)gmail(dot)com> |
Subject: | Re: [HACKERS] [PATCH] Assert that the correct locks are held when calling PageGetLSN() |
Date: | 2018-01-10 01:16:19 |
Message-ID: | 20180110011619.GB336@paquier.xyz |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Jan 09, 2018 at 05:19:00PM -0300, Alvaro Herrera wrote:
> Alvaro Herrera wrote:
> 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));
Indeed. That's better. Thanks.
> I marked the CF entry as "committed", BTW. I assume you're going to
> ship an updated version of 0002 to the next commitfest. If you have a
> new version during this commitfest, feel free to turn this entry back to
> "needs review".
That's fine for me. The rest can always be revisited later once the
issues raised are addressed.
--
Michael
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Paquier | 2018-01-10 01:19:08 | Re: pgsql: Implement channel binding tls-server-end-point for SCRAM |
Previous Message | Ashutosh Sharma | 2018-01-10 00:51:21 | Re: [HACKERS] dead or outdated URLs found in win32.h |