pg.ddx.io  pgsql-committers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
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





view thread (3+ messages)  latest in thread

Message-ID: <20240408172742.7inv5usm5mk534tn@awork3.anarazel.de>
Permalink:  ../20240408172742.7inv5usm5mk534tn@awork3.anarazel.de/
Also on:    postgresql.org/message-id/20240408172742.7inv5usm5mk534tn@awork3.anarazel.de

 · 

reply

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