postgresql/src/backend
John Naylor 0fe5f64367 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
2024-04-08 18:54:35 +07:00
..
access Teach radix tree to embed values at runtime 2024-04-08 18:54:35 +07:00
archive Add built-in ERROR handling for archive callbacks. 2024-04-02 22:28:11 -05:00
backup Remove useless duplicate call of defGetBoolean(). 2024-04-07 17:08:06 -04:00
bootstrap Remove unused #include's from backend .c files 2024-03-04 12:02:20 +01:00
catalog JSON_TABLE: Add support for NESTED paths and columns 2024-04-08 16:14:13 +09:00
commands Provide a way block-level table AMs could re-use acquire_sample_rows() 2024-04-08 14:39:48 +03:00
executor Change BitmapAdjustPrefetchIterator to accept BlockNumber 2024-04-07 01:25:15 +02:00
foreign Remove unused #include's from backend .c files 2024-03-04 12:02:20 +01:00
jit Add SQL/JSON query functions 2024-03-21 17:07:03 +09:00
lib Use the pairing heap instead of a flat array for LSN replay waiters 2024-04-03 18:15:41 +03:00
libpq Fix check for 'outlen' return from SSL_select_next_proto() 2024-04-08 05:03:17 +03:00
main Remove unused #include's from backend .c files 2024-03-04 12:02:20 +01:00
nodes JSON_TABLE: Add support for NESTED paths and columns 2024-04-08 16:14:13 +09:00
optimizer Fix usage of same ListCell transform_or_to_any()'s in nested loops 2024-04-08 01:38:37 +03:00
parser Fix some grammer errors from error messages and codes comments 2024-04-08 14:39:41 +03:00
partitioning Fix some grammer errors from error messages and codes comments 2024-04-08 14:39:41 +03:00
po Update copyright for 2024 2024-01-03 20:49:05 -05:00
port Remove unused #include's from backend .c files 2024-03-04 12:02:20 +01:00
postmaster Fill CommonRdOptions with default values in extract_autovac_opts() 2024-04-08 12:18:23 +03:00
regex Support C.UTF-8 locale in the new builtin collation provider. 2024-03-19 15:24:41 -07:00
replication Support retrieval of results in chunks with libpq. 2024-04-06 20:45:11 -04:00
rewrite Add RETURNING support to MERGE. 2024-03-17 13:58:59 +00:00
snowball Remove unused #include's from backend .c files 2024-03-04 12:02:20 +01:00
statistics Make stxstattarget nullable 2024-03-17 12:26:26 +01:00
storage Add pg_buffercache_evict() function for testing. 2024-04-08 16:23:40 +12:00
tcop Custom reloptions for table AM 2024-04-08 11:23:28 +03:00
tsearch Remove unused #include's from backend .c files 2024-03-04 12:02:20 +01:00
utils Fill CommonRdOptions with default values in extract_autovac_opts() 2024-04-08 12:18:23 +03:00
.gitignore Add .gitignore entries for AIX-specific intermediate build artifacts. 2015-07-08 20:44:22 -04:00
common.mk Blind attempt to fix LLVM dependency in the backend 2022-09-15 10:53:48 +07:00
Makefile Rework lwlocknames.txt to become lwlocklist.h 2024-03-20 11:55:20 +01:00
meson.build Remove AIX support 2024-02-28 15:17:23 +04:00
nls.mk Remove distprep 2023-11-06 15:18:04 +01:00