postgresql/src/include/storage
Heikki Linnakangas cbfbda7841 Fix MVCC bug with prepared xact with subxacts on standby
We did not recover the subtransaction IDs of prepared transactions
when starting a hot standby from a shutdown checkpoint. As a result,
such subtransactions were considered as aborted, rather than
in-progress. That would lead to hint bits being set incorrectly, and
the subtransactions suddenly becoming visible to old snapshots when
the prepared transaction was committed.

To fix, update pg_subtrans with prepared transactions's subxids when
starting hot standby from a shutdown checkpoint. The snapshots taken
from that state need to be marked as "suboverflowed", so that we also
check the pg_subtrans.

Backport to all supported versions.

Discussion: https://www.postgresql.org/message-id/6b852e98-2d49-4ca1-9e95-db419a2696e0@iki.fi
2024-06-27 21:09:58 +03:00
..
.gitignore When trace_lwlocks is used, identify individual lwlocks by name. 2015-09-11 14:01:39 -04:00
barrier.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
block.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
buf.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
buf_internals.h Add missing PGDLLIMPORT markings 2024-01-16 13:53:28 +02:00
buffile.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
bufmgr.h Harmonize function parameter names for Postgres 17. 2024-06-12 17:01:51 -04:00
bufpage.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
bulk_write.h Fix compiler warning on typedef redeclaration 2024-02-23 17:39:27 +02:00
checksum.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
checksum_impl.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
condition_variable.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
copydir.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
dsm.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
dsm_impl.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
dsm_registry.h Introduce the dynamic shared memory registry. 2024-01-19 14:24:36 -06:00
fd.h Harmonize function parameter names for Postgres 17. 2024-06-12 17:01:51 -04:00
fileset.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
freespace.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
fsm_internals.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
indexfsm.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
ipc.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
item.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
itemid.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
itemptr.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
large_object.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
latch.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
lmgr.h Avoid deadlock during orphan temp table removal. 2024-04-02 14:59:32 -04:00
lock.h Replace BackendIds with 0-based ProcNumbers 2024-03-03 19:38:22 +02:00
lockdefs.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
lwlock.h Use TidStore for dead tuple TIDs storage during lazy vacuum. 2024-04-02 10:15:37 +09:00
lwlocklist.h Revert: Implement pg_wal_replay_wait() stored procedure 2024-04-11 17:28:15 +03:00
md.h Introduce a new smgr bulk loading facility. 2024-02-23 16:10:51 +02:00
meson.build Rework lwlocknames.txt to become lwlocklist.h 2024-03-20 11:55:20 +01:00
off.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
pg_sema.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
pg_shmem.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
pmsignal.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
predicate.h Improve performance of subsystems on top of SLRU 2024-02-28 17:05:31 +01:00
predicate_internals.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
proc.h Fix typos and duplicate words 2024-04-18 21:28:07 +02:00
procarray.h Replace BackendIds with 0-based ProcNumbers 2024-03-03 19:38:22 +02:00
proclist.h Replace BackendIds with 0-based ProcNumbers 2024-03-03 19:38:22 +02:00
proclist_types.h Replace BackendIds with 0-based ProcNumbers 2024-03-03 19:38:22 +02:00
procnumber.h Replace BackendIds with 0-based ProcNumbers 2024-03-03 19:38:22 +02:00
procsignal.h Replace BackendIds with 0-based ProcNumbers 2024-03-03 19:38:22 +02:00
read_stream.h Harmonize function parameter names for Postgres 17. 2024-06-12 17:01:51 -04:00
reinit.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
relfilelocator.h Replace BackendIds with 0-based ProcNumbers 2024-03-03 19:38:22 +02:00
s_lock.h Remove AIX support 2024-02-28 15:17:23 +04:00
sharedfileset.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
shm_mq.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
shm_toc.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
shmem.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
sinval.h Replace BackendIds with 0-based ProcNumbers 2024-03-03 19:38:22 +02:00
sinvaladt.h Redefine backend ID to be an index into the proc array 2024-03-03 19:37:28 +02:00
smgr.h Harmonize function parameter names for Postgres 17. 2024-06-12 17:01:51 -04:00
spin.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
standby.h Fix MVCC bug with prepared xact with subxacts on standby 2024-06-27 21:09:58 +03:00
standbydefs.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
sync.h Update copyright for 2024 2024-01-03 20:49:05 -05:00