From: Andres Freund <andres@anarazel.de>
To: John Naylor <john.naylor@postgresql.org>
Cc: pgsql-committers@lists.postgresql.org
Subject: Re: pgsql: Teach radix tree to embed values at runtime
Date: Mon, 8 Apr 2024 10:27:42 -0700
Message-ID: <20240408172742.7inv5usm5mk534tn@awork3.anarazel.de> (raw)
In-Reply-To: <E1rtncS-0017fQ-Jd@gemulon.postgresql.org>
References: <E1rtncS-0017fQ-Jd@gemulon.postgresql.org>
Hi,
On 2024-04-08 11:57:01 +0000, John Naylor wrote:
> Teach radix tree to embed values at runtime
>
> Previously, the decision to store values in leaves or within the child
> pointer was made at compile time, with variable length values using
> leaves by necessity. This commit allows introspecting the length of
> variable length values at runtime for that decision. This requires
> the ability to tell whether the last-level child pointer is actually
> a value, so we use a pointer tag in the lowest level bit.
>
> Use this in TID store. This entails adding a byte to the header to
> reserve space for the tag. Commit f35bd9bf3 stores up to three offsets
> within the header with no bitmap, and now the header can be embedded
> as above. This reduces worst-case memory usage when TIDs are sparse.
This isn't quite C99 conformant, and thus breaks on the buildfarm animal
set up to test that:
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=mylodon&dt=2024-04-08%2012%3A07%3A01
You can't have unnamed structs in C99, that's a C11 feature. I wish we'd move
to C11, but ...
Greetings,
Andres
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-committers@postgresql.org
Cc: andres@anarazel.de, john.naylor@postgresql.org, pgsql-committers@lists.postgresql.org
Subject: Re: pgsql: Teach radix tree to embed values at runtime
In-Reply-To: <20240408172742.7inv5usm5mk534tn@awork3.anarazel.de>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox