Re: WIP: parallel GiST index builds
Tomas Vondra <tomas.vondra@enterprisedb.com>
From: Tomas Vondra <tomas.vondra@enterprisedb.com>
To: "Andrey M. Borodin" <x4mmm@yandex-team.ru>
Cc: Andreas Karlsson <andreas@proxel.se>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-07-30T12:46:39Z
Lists: pgsql-hackers
On 7/30/24 13:31, 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. Agreed, no argument here. > 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. > Ah, right. For unlogged relations we won't invoke log_newpage_range(), so we'd end up with the bogus page LSNs ... > In other words I propose to use GetFakeLSNForUnloggedRel() instead of "pg_atomic_uint64 *fakelsn;”. > Interesting idea. IIRC you suggested this earlier, but I didn't realize it has the benefit of already using an atomic counter - which solves the "ugliness" of my patch. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company