Re: WIP: parallel GiST index builds
Andreas Karlsson <andreas@proxel.se>
From: Andreas Karlsson <andreas@proxel.se>
To: "Andrey M. Borodin" <x4mmm@yandex-team.ru>,
Tomas Vondra <tomas.vondra@enterprisedb.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-08-03T09:25:34Z
Lists: pgsql-hackers
On 7/30/24 1:31 PM, Andrey M. Borodin wrote:>> On 30 Jul 2024, at 14:57, Tomas Vondra <tomas.vondra@enterprisedb.com> wrote: >> >>> >>> How do we synchronize Shared Fake LSN with global XLogCtl->unloggedLSN? Just bump XLogCtl->unloggedLSN if necessary? >>> Perhaps, consider using GetFakeLSNForUnloggedRel() instead of shared counter? As long as we do not care about FakeLSN>RealLSN. >>> >> >> I'm confused. How is this related to unloggedLSN at all? > > Parallel build should work for both logged and unlogged indexes. > If we use fake LSN in shared memory, we have to make sure that FakeLSN < XLogCtl->unloggedLSN after build. > Either way we can just use XLogCtl->unloggedLSN instead of FakeLSN in shared memory. > > In other words I propose to use GetFakeLSNForUnloggedRel() instead of "pg_atomic_uint64 *fakelsn;”. Yeah, Great point, given the ugliness of passing around the fakelsn we might as well just use GetFakeLSNForUnloggedRel(). Andreas