|
PostgreSQL Source Code git master
|
#include "postgres.h"#include "access/multixact.h"#include "access/multixact_internal.h"#include "access/slru.h"#include "access/twophase.h"#include "access/twophase_rmgr.h"#include "access/xlog.h"#include "access/xloginsert.h"#include "access/xlogutils.h"#include "miscadmin.h"#include "pg_trace.h"#include "pgstat.h"#include "postmaster/autovacuum.h"#include "storage/pmsignal.h"#include "storage/proc.h"#include "storage/procarray.h"#include "utils/guc_hooks.h"#include "utils/injection_point.h"#include "utils/lsyscache.h"#include "utils/memutils.h"
Go to the source code of this file.
Data Structures | |
| struct | MultiXactStateData |
| struct | mXactCacheEnt |
Macros | |
| #define | MULTIXACT_MEMBER_LOW_THRESHOLD UINT64CONST(2000000000) |
| #define | MULTIXACT_MEMBER_HIGH_THRESHOLD UINT64CONST(4000000000) |
| #define | MultiXactOffsetCtl (&MultiXactOffsetCtlData) |
| #define | MultiXactMemberCtl (&MultiXactMemberCtlData) |
| #define | MaxOldestSlot (MaxBackends + max_prepared_xacts) |
| #define | MAX_CACHE_ENTRIES 256 |
| #define | debug_elog2(a, b) |
| #define | debug_elog3(a, b, c) |
| #define | debug_elog4(a, b, c, d) |
| #define | debug_elog5(a, b, c, d, e) |
| #define | debug_elog6(a, b, c, d, e, f) |
| #define | SHARED_MULTIXACT_STATE_SIZE |
Typedefs | |
| typedef struct MultiXactStateData | MultiXactStateData |
| typedef struct mXactCacheEnt | mXactCacheEnt |
Definition at line 257 of file multixact.c.
| #define MAX_CACHE_ENTRIES 256 |
Definition at line 246 of file multixact.c.
| #define MaxOldestSlot (MaxBackends + max_prepared_xacts) |
Definition at line 213 of file multixact.c.
| #define MULTIXACT_MEMBER_HIGH_THRESHOLD UINT64CONST(4000000000) |
Definition at line 99 of file multixact.c.
| #define MULTIXACT_MEMBER_LOW_THRESHOLD UINT64CONST(2000000000) |
Definition at line 98 of file multixact.c.
| #define MultiXactMemberCtl (&MultiXactMemberCtlData) |
Definition at line 120 of file multixact.c.
| #define MultiXactOffsetCtl (&MultiXactOffsetCtlData) |
Definition at line 119 of file multixact.c.
| #define SHARED_MULTIXACT_STATE_SIZE |
Definition at line 1568 of file multixact.c.
References dclist_init(), fb(), InvalidMultiXactId, MXactCache, MXactContext, MyProcNumber, OldestMemberMXactId, and OldestVisibleMXactId.
Referenced by AbortTransaction(), CommitTransaction(), and test_read_multixact().
Definition at line 1596 of file multixact.c.
References fb(), MultiXactIdIsValid, MyProcNumber, OldestMemberMXactId, RegisterTwoPhaseRecord(), and TWOPHASE_RM_MULTIXACT_ID.
Referenced by PrepareTransaction().
Definition at line 1793 of file multixact.c.
References MultiXactMemberCtl, MultiXactOffsetCtl, and SimpleLruZeroAndWritePage().
Referenced by BootStrapXLOG().
Definition at line 1782 of file multixact.c.
References check_slru_buffers(), and newval.
Definition at line 1773 of file multixact.c.
References check_slru_buffers(), and newval.
Definition at line 1968 of file multixact.c.
References fb(), MultiXactMemberCtl, MultiXactOffsetCtl, and SimpleLruWriteAll().
Referenced by CheckPointGuts().
|
static |
Definition at line 2242 of file multixact.c.
References difference(), fb(), LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MULTIXACT_MEMBERS_PER_PAGE, MultiXactMemberCtl, MXOffsetToFlagsBitShift(), MXOffsetToFlagsOffset(), MXOffsetToMemberPage(), SimpleLruGetBankLock(), SimpleLruZeroPage(), XLOG_MULTIXACT_ZERO_MEM_PAGE, and XLogSimpleInsertInt64().
Referenced by GetNewMultiXactId().
|
static |
Definition at line 2208 of file multixact.c.
References fb(), FirstMultiXactId, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MultiXactIdToOffsetEntry(), MultiXactIdToOffsetPage(), MultiXactOffsetCtl, SimpleLruGetBankLock(), SimpleLruZeroPage(), XLOG_MULTIXACT_ZERO_OFF_PAGE, and XLogSimpleInsertInt64().
Referenced by GetNewMultiXactId().
|
static |
Definition at line 2424 of file multixact.c.
References Assert, fb(), MultiXactStateData::finishedStartup, LWLockRelease(), MultiXactIdToOffsetEntry(), MultiXactIdToOffsetPage(), MultiXactMemberCtl, MultiXactOffsetCtl, MultiXactState, SimpleLruDoesPhysicalPageExist(), SimpleLruGetBankLock(), SimpleLruReadPage_ReadOnly(), and SimpleLruWriteAll().
Referenced by SetOldestOffset(), and TruncateMultiXact().
| int GetMultiXactIdMembers | ( | MultiXactId | multi, |
| MultiXactMember ** | members, | ||
| bool | from_pgupgrade, | ||
| bool | isLockOnly | ||
| ) |
Definition at line 1113 of file multixact.c.
References Assert, DEBUG2, debug_elog2, debug_elog3, ereport, errcode(), ERRCODE_DATA_CORRUPTED, errmsg(), ERROR, fb(), i, LW_EXCLUSIVE, LW_SHARED, LWLockAcquire(), LWLockRelease(), MultiXactIdIsValid, MultiXactIdPrecedes(), MultiXactIdSetOldestVisible(), MultiXactIdToOffsetEntry(), MultiXactIdToOffsetPage(), MultiXactMemberCtl, MultiXactOffsetCtl, MultiXactState, MXACT_MEMBER_XACT_BITMASK, mXactCacheGetById(), mXactCachePut(), mxid_to_string(), MXOffsetToFlagsBitShift(), MXOffsetToFlagsOffset(), MXOffsetToMemberOffset(), MXOffsetToMemberPage(), MyProcNumber, NextMultiXactId(), MultiXactStateData::nextMXact, MultiXactStateData::oldestMultiXactId, OldestVisibleMXactId, palloc(), SimpleLruGetBankLock(), SimpleLruReadPage(), MultiXactMember::status, TransactionIdIsValid, and MultiXactMember::xid.
Referenced by Do_MultiXactIdWait(), DoesMultiXactIdConflict(), FreezeMultiXactId(), GetMultiXactIdHintBits(), heap_lock_tuple(), heap_lock_updated_tuple_rec(), heap_tuple_should_freeze(), MultiXactIdExpand(), MultiXactIdGetUpdateXid(), MultiXactIdIsRunning(), pg_get_multixact_members(), pgrowlocks(), and test_read_multixact().
| void GetMultiXactInfo | ( | uint32 * | multixacts, |
| MultiXactOffset * | nextOffset, | ||
| MultiXactId * | oldestMultiXactId, | ||
| MultiXactOffset * | oldestOffset | ||
| ) |
Definition at line 2467 of file multixact.c.
References fb(), LW_SHARED, LWLockAcquire(), LWLockRelease(), MultiXactState, MultiXactStateData::nextMXact, MultiXactStateData::nextOffset, MultiXactStateData::oldestMultiXactId, and MultiXactStateData::oldestOffset.
Referenced by MultiXactMemberFreezeThreshold(), and pg_get_multixact_stats().
|
static |
Definition at line 924 of file multixact.c.
References DEBUG2, debug_elog3, debug_elog4, elog, ereport, errcode(), errhint(), errmsg(), errmsg_plural(), ERROR, ExtendMultiXactMember(), ExtendMultiXactOffset(), fb(), FirstMultiXactId, get_database_name(), IsUnderPostmaster, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MultiXactStateData::multiStopLimit, MultiXactStateData::multiVacLimit, MultiXactStateData::multiWarnLimit, MultiXactStateData::multiWrapLimit, MultiXactIdPrecedes(), MultiXactState, NextMultiXactId(), MultiXactStateData::nextMXact, MultiXactStateData::nextOffset, MultiXactStateData::oldestMultiXactDB, PMSIGNAL_START_AUTOVAC_LAUNCHER, RecoveryInProgress(), SendPostmasterSignal(), START_CRIT_SECTION, and WARNING.
Referenced by MultiXactIdCreateFromMembers().
| MultiXactId GetOldestMultiXactId | ( | void | ) |
Definition at line 2303 of file multixact.c.
References fb(), i, LW_SHARED, LWLockAcquire(), LWLockRelease(), MaxOldestSlot, MultiXactIdIsValid, MultiXactIdPrecedes(), MultiXactState, MultiXactStateData::nextMXact, OldestMemberMXactId, and OldestVisibleMXactId.
Referenced by heapam_relation_set_new_filelocator(), vac_update_datfrozenxid(), and vacuum_get_cutoffs().
| void multixact_redo | ( | XLogReaderState * | record | ) |
Definition at line 2815 of file multixact.c.
References AdvanceNextFullTransactionIdPastXid(), Assert, DEBUG1, elog, fb(), i, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MultiXactAdvanceNextMXact(), MultiXactIdToOffsetPage(), MultiXactIdToOffsetSegment(), MultiXactMemberCtl, MultiXactOffsetCtl, MXOffsetToMemberSegment(), NextMultiXactId(), PANIC, PerformMembersTruncation(), PerformOffsetsTruncation(), pg_atomic_write_u64(), RecordNewMultiXact(), SetMultiXactIdLimit(), SimpleLruZeroAndWritePage(), SizeOfMultiXactTruncate, TransactionIdPrecedes(), XLOG_MULTIXACT_CREATE_ID, XLOG_MULTIXACT_TRUNCATE_ID, XLOG_MULTIXACT_ZERO_MEM_PAGE, XLOG_MULTIXACT_ZERO_OFF_PAGE, XLogRecGetData, XLogRecGetInfo, XLogRecGetXid, and XLogRecHasAnyBlockRefs.
| void multixact_twophase_postabort | ( | FullTransactionId | fxid, |
| uint16 | info, | ||
| void * | recdata, | ||
| uint32 | len | ||
| ) |
Definition at line 1695 of file multixact.c.
References fb(), len, and multixact_twophase_postcommit().
| void multixact_twophase_postcommit | ( | FullTransactionId | fxid, |
| uint16 | info, | ||
| void * | recdata, | ||
| uint32 | len | ||
| ) |
Definition at line 1680 of file multixact.c.
References Assert, fb(), InvalidMultiXactId, len, OldestMemberMXactId, and TwoPhaseGetDummyProcNumber().
Referenced by multixact_twophase_postabort().
| void multixact_twophase_recover | ( | FullTransactionId | fxid, |
| uint16 | info, | ||
| void * | recdata, | ||
| uint32 | len | ||
| ) |
Definition at line 1659 of file multixact.c.
References Assert, fb(), len, OldestMemberMXactId, and TwoPhaseGetDummyProcNumber().
| void MultiXactAdvanceNextMXact | ( | MultiXactId | minMulti, |
| MultiXactOffset | minMultiOffset | ||
| ) |
Definition at line 2164 of file multixact.c.
References Assert, DEBUG2, debug_elog3, fb(), LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MultiXactIdIsValid, MultiXactIdPrecedes(), MultiXactState, MultiXactStateData::nextMXact, and MultiXactStateData::nextOffset.
Referenced by multixact_redo(), and xlog_redo().
| void MultiXactAdvanceOldest | ( | MultiXactId | oldestMulti, |
| Oid | oldestMultiDB | ||
| ) |
Definition at line 2191 of file multixact.c.
References Assert, InRecovery, MultiXactIdPrecedes(), MultiXactState, MultiXactStateData::oldestMultiXactId, and SetMultiXactIdLimit().
Referenced by xlog_redo().
| void MultiXactGetCheckptMulti | ( | bool | is_shutdown, |
| MultiXactId * | nextMulti, | ||
| MultiXactOffset * | nextMultiOffset, | ||
| MultiXactId * | oldestMulti, | ||
| Oid * | oldestMultiDB | ||
| ) |
Definition at line 1946 of file multixact.c.
References DEBUG2, debug_elog6, fb(), LW_SHARED, LWLockAcquire(), LWLockRelease(), MultiXactState, MultiXactStateData::nextMXact, MultiXactStateData::nextOffset, MultiXactStateData::oldestMultiXactDB, and MultiXactStateData::oldestMultiXactId.
Referenced by CreateCheckPoint().
| MultiXactId MultiXactIdCreate | ( | TransactionId | xid1, |
| MultiXactStatus | status1, | ||
| TransactionId | xid2, | ||
| MultiXactStatus | status2 | ||
| ) |
Definition at line 299 of file multixact.c.
References Assert, DEBUG2, debug_elog3, fb(), MultiXactIdCreateFromMembers(), MultiXactIdIsValid, mxid_to_string(), MyProcNumber, OldestMemberMXactId, MultiXactMember::status, TransactionIdEquals, TransactionIdIsValid, and MultiXactMember::xid.
Referenced by compute_new_xmax_infomask(), and test_create_multixact().
| MultiXactId MultiXactIdCreateFromMembers | ( | int | nmembers, |
| MultiXactMember * | members | ||
| ) |
Definition at line 656 of file multixact.c.
References DEBUG2, debug_elog2, debug_elog3, elog, END_CRIT_SECTION, ERROR, fb(), GetNewMultiXactId(), i, INJECTION_POINT_CACHED, INJECTION_POINT_LOAD, InvalidMultiXactId, ISUPDATE_from_mxstatus, MultiXactIdIsValid, mXactCacheGetBySet(), mXactCachePut(), mxid_to_string(), RecordNewMultiXact(), SizeOfMultiXactCreate, XLOG_MULTIXACT_CREATE_ID, XLogBeginInsert(), XLogInsert(), and XLogRegisterData().
Referenced by FreezeMultiXactId(), MultiXactIdCreate(), and MultiXactIdExpand().
| MultiXactId MultiXactIdExpand | ( | MultiXactId | multi, |
| TransactionId | xid, | ||
| MultiXactStatus | status | ||
| ) |
Definition at line 352 of file multixact.c.
References Assert, DEBUG2, debug_elog3, debug_elog4, debug_elog5, fb(), GetMultiXactIdMembers(), i, ISUPDATE_from_mxstatus, j, MultiXactIdCreateFromMembers(), MultiXactIdIsValid, mxstatus_to_string(), MyProcNumber, OldestMemberMXactId, palloc_array, pfree(), MultiXactMember::status, TransactionIdDidCommit(), TransactionIdEquals, TransactionIdIsInProgress(), TransactionIdIsValid, and MultiXactMember::xid.
Referenced by compute_new_xmax_infomask().
| bool MultiXactIdIsRunning | ( | MultiXactId | multi, |
| bool | isLockOnly | ||
| ) |
Definition at line 463 of file multixact.c.
References DEBUG2, debug_elog2, debug_elog3, debug_elog4, fb(), GetMultiXactIdMembers(), i, pfree(), TransactionIdIsCurrentTransactionId(), and TransactionIdIsInProgress().
Referenced by compute_new_xmax_infomask(), FreezeMultiXactId(), HeapTupleSatisfiesUpdate(), and HeapTupleSatisfiesVacuumHorizon().
| bool MultiXactIdPrecedes | ( | MultiXactId | multi1, |
| MultiXactId | multi2 | ||
| ) |
Definition at line 2765 of file multixact.c.
References fb().
Referenced by check_mxid_in_range(), copy_table_data(), do_start_worker(), FreezeMultiXactId(), GetMultiXactIdMembers(), GetNewMultiXactId(), GetOldestMultiXactId(), heap_prepare_freeze_tuple(), heap_tuple_should_freeze(), heap_vacuum_eager_scan_setup(), MultiXactAdvanceNextMXact(), MultiXactAdvanceOldest(), MultiXactIdSetOldestVisible(), MultiXactOffsetPagePrecedes(), relation_needs_vacanalyze(), SetMultiXactIdLimit(), vac_truncate_clog(), vac_update_datfrozenxid(), vac_update_relstats(), vacuum_get_cutoffs(), and vacuum_xid_failsafe_check().
| bool MultiXactIdPrecedesOrEquals | ( | MultiXactId | multi1, |
| MultiXactId | multi2 | ||
| ) |
Definition at line 2779 of file multixact.c.
References fb().
Referenced by check_mxid_in_range(), heap_tuple_should_freeze(), heap_vacuum_rel(), TruncateMultiXact(), and vacuum_get_cutoffs().
Definition at line 537 of file multixact.c.
References DEBUG2, debug_elog4, fb(), LW_SHARED, LWLockAcquire(), LWLockRelease(), MultiXactIdIsValid, MultiXactState, MyProcNumber, MultiXactStateData::nextMXact, and OldestMemberMXactId.
Referenced by heap_delete(), heap_lock_tuple(), heap_lock_updated_tuple(), heap_update(), and test_create_multixact().
Definition at line 587 of file multixact.c.
References DEBUG2, debug_elog4, fb(), i, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MaxOldestSlot, MultiXactIdIsValid, MultiXactIdPrecedes(), MultiXactState, MyProcNumber, MultiXactStateData::nextMXact, OldestMemberMXactId, and OldestVisibleMXactId.
Referenced by GetMultiXactIdMembers().
Definition at line 2511 of file multixact.c.
References autovacuum_multixact_freeze_max_age, fb(), GetMultiXactInfo(), Min, MULTIXACT_MEMBER_HIGH_THRESHOLD, and MULTIXACT_MEMBER_LOW_THRESHOLD.
Referenced by do_autovacuum(), do_start_worker(), and vacuum_get_cutoffs().
Definition at line 2921 of file multixact.c.
References MultiXactMemberCtl, and SlruSyncFileTag().
Definition at line 2732 of file multixact.c.
References fb(), FirstMultiXactId, MULTIXACT_OFFSETS_PER_PAGE, and MultiXactIdPrecedes().
Referenced by MultiXactShmemInit().
Definition at line 2912 of file multixact.c.
References MultiXactOffsetCtl, and SlruSyncFileTag().
| void MultiXactSetNextMXact | ( | MultiXactId | nextMulti, |
| MultiXactOffset | nextMultiOffset | ||
| ) |
Definition at line 1992 of file multixact.c.
References Assert, DEBUG2, debug_elog4, fb(), LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MultiXactIdIsValid, MultiXactState, MultiXactStateData::nextMXact, and MultiXactStateData::nextOffset.
Referenced by BootStrapXLOG(), StartupXLOG(), and xlog_redo().
Definition at line 1724 of file multixact.c.
References Assert, DEBUG2, debug_elog2, fb(), IsUnderPostmaster, MaxOldestSlot, MemSet, multixact_member_buffers, multixact_offset_buffers, MULTIXACT_OFFSETS_PER_PAGE, MultiXactMemberCtl, MultiXactMemberPagePrecedes(), MultiXactOffsetCtl, MultiXactOffsetPagePrecedes(), MultiXactState, OldestMemberMXactId, OldestVisibleMXactId, MultiXactStateData::perBackendXactIds, SHARED_MULTIXACT_STATE_SIZE, ShmemInitStruct(), SimpleLruInit(), SlruPagePrecedesUnitTests, SYNC_HANDLER_MULTIXACT_MEMBER, and SYNC_HANDLER_MULTIXACT_OFFSET.
Referenced by CreateOrAttachShmemStructs().
Definition at line 1707 of file multixact.c.
References add_size(), multixact_member_buffers, multixact_offset_buffers, SHARED_MULTIXACT_STATE_SIZE, and SimpleLruShmemSize().
Referenced by CalculateShmemSize().
|
static |
Definition at line 1422 of file multixact.c.
References dlist_iter::cur, dclist_container, dclist_foreach, dclist_move_head(), DEBUG2, debug_elog2, debug_elog3, fb(), mXactCacheEnt::members, mXactCacheEnt::multi, MXactCache, mxid_to_string(), mXactCacheEnt::nmembers, and palloc().
Referenced by GetMultiXactIdMembers().
|
static |
Definition at line 1379 of file multixact.c.
References dlist_iter::cur, dclist_container, dclist_foreach, dclist_move_head(), DEBUG2, debug_elog2, debug_elog3, fb(), InvalidMultiXactId, mXactCacheEnt::members, mXactCacheEnt::multi, MXactCache, mxactMemberComparator(), mxid_to_string(), mXactCacheEnt::nmembers, and qsort.
Referenced by MultiXactIdCreateFromMembers().
|
static |
Definition at line 1469 of file multixact.c.
References ALLOCSET_SMALL_SIZES, AllocSetContextCreate, dclist_container, dclist_count(), dclist_delete_from(), dclist_push_head(), dclist_tail_node(), DEBUG2, debug_elog2, debug_elog3, fb(), MAX_CACHE_ENTRIES, mXactCacheEnt::members, MemoryContextAlloc(), mXactCacheEnt::multi, MXactCache, MXactContext, mxactMemberComparator(), mxid_to_string(), mXactCacheEnt::nmembers, mXactCacheEnt::node, pfree(), qsort, and TopTransactionContext.
Referenced by GetMultiXactIdMembers(), and MultiXactIdCreateFromMembers().
Definition at line 1349 of file multixact.c.
References fb().
Referenced by mXactCacheGetBySet(), and mXactCachePut().
| char * mxid_to_string | ( | MultiXactId | multi, |
| int | nmembers, | ||
| MultiXactMember * | members | ||
| ) |
Definition at line 1537 of file multixact.c.
References appendStringInfo(), appendStringInfoChar(), buf, fb(), i, initStringInfo(), MemoryContextStrdup(), mxstatus_to_string(), pfree(), str, and TopMemoryContext.
Referenced by GetMultiXactIdMembers(), MultiXactIdCreate(), MultiXactIdCreateFromMembers(), mXactCacheGetById(), mXactCacheGetBySet(), and mXactCachePut().
| char * mxstatus_to_string | ( | MultiXactStatus | status | ) |
Definition at line 1514 of file multixact.c.
References elog, ERROR, MultiXactStatusForKeyShare, MultiXactStatusForNoKeyUpdate, MultiXactStatusForShare, MultiXactStatusForUpdate, MultiXactStatusNoKeyUpdate, and MultiXactStatusUpdate.
Referenced by MultiXactIdExpand(), mxid_to_string(), and pg_get_multixact_members().
|
inlinestatic |
Definition at line 102 of file multixact.c.
References FirstMultiXactId, and MaxMultiXactId.
Referenced by GetMultiXactIdMembers(), GetNewMultiXactId(), multixact_redo(), and RecordNewMultiXact().
|
static |
Definition at line 2564 of file multixact.c.
References fb(), MultiXactMemberCtl, MXOffsetToMemberPage(), and SimpleLruTruncate().
Referenced by multixact_redo(), and TruncateMultiXact().
|
static |
Definition at line 2574 of file multixact.c.
References fb(), MultiXactIdToOffsetPage(), MultiXactOffsetCtl, PreviousMultiXactId(), and SimpleLruTruncate().
Referenced by multixact_redo(), and TruncateMultiXact().
| void PostPrepare_MultiXact | ( | FullTransactionId | fxid | ) |
Definition at line 1610 of file multixact.c.
References dclist_init(), fb(), InvalidMultiXactId, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MultiXactIdIsValid, MXactCache, MXactContext, MyProcNumber, OldestMemberMXactId, OldestVisibleMXactId, and TwoPhaseGetDummyProcNumber().
Referenced by PrepareTransaction().
|
inlinestatic |
Definition at line 108 of file multixact.c.
References FirstMultiXactId, and MaxMultiXactId.
Referenced by PerformOffsetsTruncation().
| void ReadMultiXactIdRange | ( | MultiXactId * | oldest, |
| MultiXactId * | next | ||
| ) |
Definition at line 637 of file multixact.c.
References fb(), LW_SHARED, LWLockAcquire(), LWLockRelease(), MultiXactState, next, MultiXactStateData::nextMXact, and MultiXactStateData::oldestMultiXactId.
Referenced by update_cached_mxid_range().
| MultiXactId ReadNextMultiXactId | ( | void | ) |
Definition at line 620 of file multixact.c.
References fb(), LW_SHARED, LWLockAcquire(), LWLockRelease(), MultiXactState, and MultiXactStateData::nextMXact.
Referenced by ATRewriteTables(), AutoVacWorkerMain(), do_start_worker(), mxid_age(), refresh_by_heap_swap(), vac_update_datfrozenxid(), vac_update_relstats(), vacuum_get_cutoffs(), and vacuum_xid_failsafe_check().
|
static |
Definition at line 757 of file multixact.c.
References Assert, fb(), FirstMultiXactId, i, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MultiXactIdToOffsetEntry(), MultiXactIdToOffsetPage(), MultiXactMemberCtl, MultiXactOffsetCtl, MultiXactStatusUpdate, MXACT_MEMBER_BITS_PER_XACT, MXOffsetToFlagsBitShift(), MXOffsetToFlagsOffset(), MXOffsetToMemberOffset(), MXOffsetToMemberPage(), next, NextMultiXactId(), SimpleLruGetBankLock(), SimpleLruReadPage(), MultiXactMember::status, and MultiXactMember::xid.
Referenced by multixact_redo(), and MultiXactIdCreateFromMembers().
| void SetMultiXactIdLimit | ( | MultiXactId | oldest_datminmxid, |
| Oid | oldest_datoid | ||
| ) |
Definition at line 2014 of file multixact.c.
References Assert, autovacuum_multixact_freeze_max_age, DEBUG1, ereport, errhint(), errmsg_internal(), errmsg_plural(), fb(), MultiXactStateData::finishedStartup, FirstMultiXactId, get_database_name(), InRecovery, IsTransactionState(), IsUnderPostmaster, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MaxMultiXactId, MultiXactStateData::multiStopLimit, MultiXactStateData::multiVacLimit, MultiXactStateData::multiWarnLimit, MultiXactStateData::multiWrapLimit, MultiXactIdIsValid, MultiXactIdPrecedes(), MultiXactState, MultiXactStateData::nextMXact, MultiXactStateData::oldestMultiXactDB, MultiXactStateData::oldestMultiXactId, PMSIGNAL_START_AUTOVAC_LAUNCHER, SendPostmasterSignal(), SetOldestOffset(), and WARNING.
Referenced by BootStrapXLOG(), multixact_redo(), MultiXactAdvanceOldest(), StartupXLOG(), TrimMultiXact(), and vac_truncate_clog().
Definition at line 2338 of file multixact.c.
References Assert, DEBUG1, ereport, errmsg(), errmsg_internal(), fb(), find_multixact_start(), MultiXactStateData::finishedStartup, LOG, LW_EXCLUSIVE, LW_SHARED, LWLockAcquire(), LWLockRelease(), MultiXactState, MultiXactStateData::nextMXact, MultiXactStateData::nextOffset, MultiXactStateData::oldestMultiXactId, and MultiXactStateData::oldestOffset.
Referenced by SetMultiXactIdLimit().
Definition at line 1809 of file multixact.c.
References MultiXactIdToOffsetPage(), MultiXactMemberCtl, MultiXactOffsetCtl, MultiXactState, MXOffsetToMemberPage(), MultiXactStateData::nextMXact, MultiXactStateData::nextOffset, and pg_atomic_write_u64().
Referenced by StartupXLOG().
Definition at line 1834 of file multixact.c.
References fb(), MultiXactStateData::finishedStartup, FirstMultiXactId, LW_EXCLUSIVE, LW_SHARED, LWLockAcquire(), LWLockRelease(), MemSet, MultiXactIdToOffsetEntry(), MultiXactIdToOffsetPage(), MultiXactMemberCtl, MultiXactOffsetCtl, MultiXactState, MXOffsetToFlagsOffset(), MXOffsetToMemberOffset(), MXOffsetToMemberPage(), MultiXactStateData::nextMXact, MultiXactStateData::nextOffset, MultiXactStateData::oldestMultiXactDB, MultiXactStateData::oldestMultiXactId, pg_atomic_write_u64(), SetMultiXactIdLimit(), SimpleLruGetBankLock(), SimpleLruReadPage(), and SimpleLruZeroPage().
Referenced by StartupXLOG().
| void TruncateMultiXact | ( | MultiXactId | newOldestMulti, |
| Oid | newOldestMultiDB | ||
| ) |
Definition at line 2599 of file multixact.c.
References Assert, DEBUG1, DELAY_CHKPT_START, PGPROC::delayChkptFlags, elog, END_CRIT_SECTION, ereport, errmsg(), fb(), find_multixact_start(), MultiXactStateData::finishedStartup, LOG, LW_EXCLUSIVE, LW_SHARED, LWLockAcquire(), LWLockRelease(), MultiXactIdIsValid, MultiXactIdPrecedesOrEquals(), MultiXactIdToOffsetSegment(), MultiXactState, MXOffsetToMemberSegment(), MyProc, MultiXactStateData::nextMXact, MultiXactStateData::nextOffset, MultiXactStateData::oldestMultiXactDB, MultiXactStateData::oldestMultiXactId, MultiXactStateData::oldestOffset, PerformMembersTruncation(), PerformOffsetsTruncation(), RecoveryInProgress(), START_CRIT_SECTION, and WriteMTruncateXlogRec().
Referenced by vac_truncate_clog().
|
static |
Definition at line 2794 of file multixact.c.
References fb(), xl_multixact_truncate::oldestMultiDB, SizeOfMultiXactTruncate, XLOG_MULTIXACT_TRUNCATE_ID, XLogBeginInsert(), XLogFlush(), XLogInsert(), and XLogRegisterData().
Referenced by TruncateMultiXact().
|
static |
Definition at line 117 of file multixact.c.
|
static |
Definition at line 116 of file multixact.c.
|
static |
Definition at line 216 of file multixact.c.
Referenced by find_multixact_start(), GetMultiXactIdMembers(), GetMultiXactInfo(), GetNewMultiXactId(), GetOldestMultiXactId(), MultiXactAdvanceNextMXact(), MultiXactAdvanceOldest(), MultiXactGetCheckptMulti(), MultiXactIdSetOldestMember(), MultiXactIdSetOldestVisible(), MultiXactSetNextMXact(), MultiXactShmemInit(), ReadMultiXactIdRange(), ReadNextMultiXactId(), SetMultiXactIdLimit(), SetOldestOffset(), StartupMultiXact(), TrimMultiXact(), and TruncateMultiXact().
|
static |
Definition at line 247 of file multixact.c.
Referenced by AtEOXact_MultiXact(), mXactCacheGetById(), mXactCacheGetBySet(), mXactCachePut(), and PostPrepare_MultiXact().
|
static |
Definition at line 248 of file multixact.c.
Referenced by AtEOXact_MultiXact(), mXactCachePut(), and PostPrepare_MultiXact().
|
static |
Definition at line 217 of file multixact.c.
Referenced by AtEOXact_MultiXact(), AtPrepare_MultiXact(), GetOldestMultiXactId(), multixact_twophase_postcommit(), multixact_twophase_recover(), MultiXactIdCreate(), MultiXactIdExpand(), MultiXactIdSetOldestMember(), MultiXactIdSetOldestVisible(), MultiXactShmemInit(), and PostPrepare_MultiXact().
|
static |
Definition at line 218 of file multixact.c.
Referenced by AtEOXact_MultiXact(), GetMultiXactIdMembers(), GetOldestMultiXactId(), MultiXactIdSetOldestVisible(), MultiXactShmemInit(), and PostPrepare_MultiXact().