pg.ddx.io pgsql-committers@postgresql.org mailing list archive
help / color / mirror / Atom feedpgsql: Teach radix tree to embed values at runtime
3+ messages / 3 participants
[nested] [flat]
* pgsql: Teach radix tree to embed values at runtime
@ 2024-04-08 11:57 John Naylor <john.naylor@postgresql.org>
0 siblings, 1 reply; 3+ messages in thread
From: John Naylor @ 2024-04-08 11:57 UTC (permalink / raw)
To: pgsql-committers@lists.postgresql.org
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.
Reviewed (in an earlier version) by Masahiko Sawada
Discussion: https://postgr.es/m/CANWCAZYw+_KAaUNruhJfE=h6WgtBKeDG32St8vBJBEY82bGVRQ@mail.gmail.com
Discussion: https://postgr.es/m/CAD21AoBci3Hujzijubomo1tdwH3XtQ9F89cTNQ4bsQijOmqnEw@mail.gmail.com
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/0fe5f64367bc2fc70baa1f0f993638830f8aa6a5
Modified Files
--------------
src/backend/access/common/tidstore.c | 81 +++++++++++++++++++++++++-----------
src/include/lib/radixtree.h | 32 ++++++++++++++
2 files changed, 89 insertions(+), 24 deletions(-)
^ permalink raw reply [nested|flat] 3+ messages in thread
* Re: pgsql: Teach radix tree to embed values at runtime
@ 2024-04-08 17:27 Andres Freund <andres@anarazel.de>
parent: John Naylor <john.naylor@postgresql.org>
0 siblings, 1 reply; 3+ messages in thread
From: Andres Freund @ 2024-04-08 17:27 UTC (permalink / raw)
To: John Naylor <john.naylor@postgresql.org>; +Cc: pgsql-committers@lists.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
^ permalink raw reply [nested|flat] 3+ messages in thread
* Re: pgsql: Teach radix tree to embed values at runtime
@ 2024-04-09 04:39 John Naylor <johncnaylorls@gmail.com>
parent: Andres Freund <andres@anarazel.de>
0 siblings, 0 replies; 3+ messages in thread
From: John Naylor @ 2024-04-09 04:39 UTC (permalink / raw)
To: Andres Freund <andres@anarazel.de>; +Cc: John Naylor <john.naylor@postgresql.org>; pgsql-committers@lists.postgresql.org
On Tue, Apr 9, 2024 at 12:27 AM Andres Freund <andres@anarazel.de> wrote:
>
> 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
I haven't forgotten about this and will fix within a few hours.
^ permalink raw reply [nested|flat] 3+ messages in thread
end of thread, other threads:[~2024-04-09 04:39 UTC | newest]
Thread overview: 3+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2024-04-08 11:57 pgsql: Teach radix tree to embed values at runtime John Naylor <john.naylor@postgresql.org>
2024-04-08 17:27 ` Andres Freund <andres@anarazel.de>
2024-04-09 04:39 ` John Naylor <johncnaylorls@gmail.com>
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