postgresql/src/include
Heikki Linnakangas bd8d9c9bdf Widen MultiXactOffset to 64 bits
This eliminates MultiXactOffset wraparound and the 2^32 limit on the
total number of multixid members. Multixids are still limited to 2^31,
but this is a nice improvement because 'members' can grow much faster
than the number of multixids. On such systems, you can now run longer
before hitting hard limits or triggering anti-wraparound vacuums.

Not having to deal with MultiXactOffset wraparound also simplifies the
code and removes some gnarly corner cases.

We no longer need to perform emergency anti-wraparound freezing
because of running out of 'members' space, so the offset stop limit is
gone. But you might still not want 'members' to consume huge amounts
of disk space. For that reason, I kept the logic for lowering vacuum's
multixid freezing cutoff if a large amount of 'members' space is
used. The thresholds for that are roughly the same as the "safe" and
"danger" thresholds used before, 2 billion transactions and 4 billion
transactions. This keeps the behavior for the freeze cutoff roughly
the same as before. It might make sense to make this smarter or
configurable, now that the threshold is only needed to manage disk
usage, but that's left for the future.

Add code to pg_upgrade to convert multitransactions from the old to
the new format, rewriting the pg_multixact SLRU files. Because
pg_upgrade now rewrites the files, we can get rid of some hacks we had
put in place to deal with old bugs and upgraded clusters. Bump catalog
version for the pg_multixact/offsets format change.

Author: Maxim Orlov <orlovmg@gmail.com>
Reviewed-by: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Reviewed-by: Alexander Korotkov <aekorotkov@gmail.com>
Reviewed-by: wenhui qiu <qiuwenhuifx@gmail.com>
Discussion: https://www.postgresql.org/message-id/CACG%3DezaWg7_nt-8ey4aKv2w9LcuLthHknwCawmBgEeTnJrJTcw@mail.gmail.com
2025-12-09 13:53:03 +02:00
..
access Widen MultiXactOffset to 64 bits 2025-12-09 13:53:03 +02:00
archive Update copyright for 2025 2025-01-01 11:21:55 -05:00
backup Add backup_type column to pg_stat_progress_basebackup. 2025-08-05 10:50:45 -07:00
bootstrap Allow redeclaration of typedef yyscan_t 2025-09-12 08:16:00 +02:00
catalog Widen MultiXactOffset to 64 bits 2025-12-09 13:53:03 +02:00
commands Move WAL sequence code into its own file 2025-12-01 16:21:41 +09:00
common Add pg_add_size_overflow() and friends 2025-11-24 09:59:38 -08:00
datatype Avoid using timezone Asia/Manila in regression tests. 2025-01-20 15:47:53 -05:00
executor Add parallelism support for TID Range Scans 2025-11-27 14:05:04 +13:00
fe_utils Add \pset options for boolean value display 2025-11-03 17:40:39 +01:00
foreign Improve ExplainState type handling in header files 2025-09-15 11:04:10 +02:00
jit jit: Fix type used for Datum values in LLVM IR. 2025-09-17 13:38:35 +12:00
lib Use palloc_object() and palloc_array() in more areas of the tree 2025-12-09 14:53:17 +09:00
libpq Fix pg_isblank() 2025-11-28 08:33:07 +01:00
mb Use C11 char16_t and char32_t for Unicode code points. 2025-10-29 14:17:13 -07:00
nodes Fix stray references to SubscriptRef 2025-12-03 14:44:14 +01:00
optimizer Add parallelism support for TID Range Scans 2025-11-27 14:05:04 +13:00
parser Improve detection of implicitly-temporary views. 2025-11-24 17:00:16 -05:00
partitioning Mark function arguments of type "Datum *" as "const Datum *" where possible 2025-10-31 10:47:25 +01:00
pch meson: Increase minimum version to 0.57.2 2025-07-02 11:14:53 +02:00
port Improve documentation for pg_atomic_unlocked_write_u32() 2025-12-08 23:11:19 -05:00
portability Update copyright for 2025 2025-01-01 11:21:55 -05:00
postmaster Add log_autoanalyze_min_duration 2025-10-15 14:31:12 +02:00
regex pg_regc_locale.c: rename some static functions. 2025-10-14 11:04:04 -07:00
replication Add slotsync_skip_reason column to pg_replication_slots view. 2025-11-28 05:21:35 +00:00
rewrite Update various forward declarations to use typedef 2025-09-15 11:04:10 +02:00
snowball Update to latest Snowball sources. 2025-02-18 21:13:54 -05:00
statistics Rework output format of pg_dependencies 2025-11-17 10:44:26 +09:00
storage bufmgr: Turn BUFFER_LOCK_* into an enum 2025-12-03 18:38:20 -05:00
tcop Implement WAIT FOR command 2025-11-05 11:44:13 +02:00
tsearch Update copyright for 2025 2025-01-01 11:21:55 -05:00
utils Revise APIs for pushJsonbValue() and associated routines. 2025-12-07 11:51:33 -05:00
.gitignore Use <stdint.h> and <inttypes.h> for c.h integers. 2024-12-04 15:05:38 +13:00
c.h Widen MultiXactOffset to 64 bits 2025-12-09 13:53:03 +02:00
fmgr.h Remove no longer needed casts to Pointer 2025-12-04 19:40:08 +01:00
funcapi.h Update copyright for 2025 2025-01-01 11:21:55 -05:00
getopt_long.h IWYU widely useful pragmas 2025-01-15 18:57:53 +01:00
Makefile Clean up newly added guc_tables.inc.c 2025-09-04 17:25:43 +02:00
meson.build meson: add and use stamp files for generated headers 2025-08-11 15:18:23 -04:00
miscadmin.h Avoid mixing void and integer in a conditional expression. 2025-11-02 12:30:44 -05:00
pg_config.h.in Re-run autoheader 2025-11-06 07:37:22 +01:00
pg_config_manual.h Move SLRU_PAGES_PER_SEGMENT to pg_config_manual.h 2025-11-10 16:11:41 +02:00
pg_getopt.h IWYU widely useful pragmas 2025-01-15 18:57:53 +01:00
pg_trace.h IWYU widely useful pragmas 2025-01-15 18:57:53 +01:00
pgstat.h Rename column slotsync_skip_at to slotsync_last_skip. 2025-12-05 04:12:55 +00:00
pgtar.h Update copyright for 2025 2025-01-01 11:21:55 -05:00
pgtime.h Seek zone abbreviations in the IANA data before timezone_abbreviations. 2025-01-16 14:11:19 -05:00
port.h Inline pg_ascii_tolower() and pg_ascii_toupper(). 2025-11-26 10:04:32 -08:00
postgres.h Grab the low-hanging fruit from forcing USE_FLOAT8_BYVAL to true. 2025-08-13 17:18:22 -04:00
postgres_ext.h Move pg_int64 back to postgres_ext.h 2025-09-16 10:48:56 +02:00
postgres_fe.h IWYU widely useful pragmas 2025-01-15 18:57:53 +01:00
varatt.h Convert varatt.h access macros to static inline functions. 2025-08-05 17:01:25 +02:00
windowapi.h Add IGNORE NULLS/RESPECT NULLS option to Window functions. 2025-10-03 09:47:36 +09:00