Re: pgsql: Teach radix tree to embed values at runtime
От | Andres Freund |
---|---|
Тема | Re: pgsql: Teach radix tree to embed values at runtime |
Дата | |
Msg-id | 20240408172742.7inv5usm5mk534tn@awork3.anarazel.de обсуждение исходный текст |
Ответ на | pgsql: Teach radix tree to embed values at runtime (John Naylor <john.naylor@postgresql.org>) |
Ответы |
Re: pgsql: Teach radix tree to embed values at runtime
|
Список | 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 по дате отправления: