Re: pgsql: Teach radix tree to embed values at runtime - Mailing list pgsql-committers

From Andres Freund
Subject Re: pgsql: Teach radix tree to embed values at runtime
Date
Msg-id 20240408172742.7inv5usm5mk534tn@awork3.anarazel.de
Whole thread Raw
In response to pgsql: Teach radix tree to embed values at runtime  (John Naylor <john.naylor@postgresql.org>)
Responses Re: pgsql: Teach radix tree to embed values at runtime
List 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



pgsql-committers by date:

Previous
From: Jelte Fennema-Nio
Date:
Subject: Re: pgsql: Transform OR clauses to ANY expression
Next
From: Tom Lane
Date:
Subject: [MASSMAIL] pgsql: Further review for re-implementation of psql's FETCH_COUNT featu