Re: pgsql: Teach radix tree to embed values at runtime

From: Andres Freund <andres(at)anarazel(dot)de>
To: John Naylor <john(dot)naylor(at)postgresql(dot)org>
Cc: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: Re: pgsql: Teach radix tree to embed values at runtime
Date: 2024-04-08 17:27:42
Message-ID: 20240408172742.7inv5usm5mk534tn@awork3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

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

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2024-04-08 19:49:17 pgsql: Further review for re-implementation of psql's FETCH_COUNT featu
Previous Message Robert Haas 2024-04-08 15:53:48 Re: pgsql: Fix the intermittent buildfarm failures in 040_standby_failover_