PostgreSQL Source Code
git master
|
#include "postgres.h"
#include "access/clog.h"
#include "access/commit_ts.h"
#include "access/subtrans.h"
#include "access/transam.h"
#include "access/xact.h"
#include "access/xlogutils.h"
#include "commands/dbcommands.h"
#include "miscadmin.h"
#include "postmaster/autovacuum.h"
#include "storage/pmsignal.h"
#include "storage/proc.h"
#include "utils/syscache.h"
Go to the source code of this file.
Macros | |
#define | VAR_OID_PREFETCH 8192 |
Functions | |
FullTransactionId | GetNewTransactionId (bool isSubXact) |
FullTransactionId | ReadNextFullTransactionId (void) |
void | AdvanceNextFullTransactionIdPastXid (TransactionId xid) |
void | AdvanceOldestClogXid (TransactionId oldest_datfrozenxid) |
void | SetTransactionIdLimit (TransactionId oldest_datfrozenxid, Oid oldest_datoid) |
bool | ForceTransactionIdLimitUpdate (void) |
Oid | GetNewObjectId (void) |
static void | SetNextObjectId (Oid nextOid) |
void | StopGeneratingPinnedObjectIds (void) |
Variables | |
VariableCache | ShmemVariableCache = NULL |
void AdvanceNextFullTransactionIdPastXid | ( | TransactionId | xid | ) |
Definition at line 277 of file varsup.c.
References AmStartupProcess, Assert(), epoch, EpochFromFullTransactionId, FullTransactionIdFromEpochAndXid(), IsUnderPostmaster, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), VariableCacheData::nextXid, ShmemVariableCache, TransactionIdAdvance, TransactionIdFollowsOrEquals(), unlikely, and XidFromFullTransactionId.
Referenced by ApplyWalRecord(), multixact_redo(), ProcArrayApplyRecoveryInfo(), ProcessTwoPhaseBuffer(), RecordKnownAssignedTransactionIds(), xact_redo_abort(), and xact_redo_commit().
void AdvanceOldestClogXid | ( | TransactionId | oldest_datfrozenxid | ) |
Definition at line 328 of file varsup.c.
References LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), VariableCacheData::oldestClogXid, ShmemVariableCache, and TransactionIdPrecedes().
Referenced by BootStrapXLOG(), clog_redo(), StartupXLOG(), and TruncateCLOG().
bool ForceTransactionIdLimitUpdate | ( | void | ) |
Definition at line 490 of file varsup.c.
References DATABASEOID, LW_SHARED, LWLockAcquire(), LWLockRelease(), VariableCacheData::nextXid, ObjectIdGetDatum(), VariableCacheData::oldestXid, VariableCacheData::oldestXidDB, SearchSysCacheExists1, ShmemVariableCache, TransactionIdFollowsOrEquals(), TransactionIdIsNormal, TransactionIdIsValid, XidFromFullTransactionId, and VariableCacheData::xidVacLimit.
Referenced by vac_update_datfrozenxid().
Oid GetNewObjectId | ( | void | ) |
Definition at line 528 of file varsup.c.
References elog(), ERROR, FirstGenbkiObjectId, FirstNormalObjectId, IsPostmasterEnvironment, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), VariableCacheData::nextOid, VariableCacheData::oidCount, RecoveryInProgress(), ShmemVariableCache, VAR_OID_PREFETCH, and XLogPutNextOid().
Referenced by GetNewOidWithIndex(), and GetNewRelFileNumber().
FullTransactionId GetNewTransactionId | ( | bool | isSubXact | ) |
Definition at line 50 of file varsup.c.
References Assert(), BootstrapTransactionId, XidCacheStatus::count, elog(), ereport, errcode(), errhint(), errmsg(), ERROR, ExtendCLOG(), ExtendCommitTs(), ExtendSUBTRANS(), FullTransactionIdAdvance(), FullTransactionIdFromEpochAndXid(), get_database_name(), IsBootstrapProcessingMode, IsInParallelMode(), IsUnderPostmaster, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MyProc, VariableCacheData::nextXid, VariableCacheData::oldestXidDB, XidCacheStatus::overflowed, pg_write_barrier, PGPROC_MAX_CACHED_SUBXIDS, PGPROC::pgxactoff, PMSIGNAL_START_AUTOVAC_LAUNCHER, ProcGlobal, RecoveryInProgress(), SendPostmasterSignal(), ShmemVariableCache, PGPROC::subxids, PROC_HDR::subxidStates, PGPROC::subxidStatus, TransactionIdFollowsOrEquals(), WARNING, PGPROC::xid, XidFromFullTransactionId, XidCache::xids, PROC_HDR::xids, VariableCacheData::xidStopLimit, VariableCacheData::xidVacLimit, VariableCacheData::xidWarnLimit, and VariableCacheData::xidWrapLimit.
Referenced by AssignTransactionId().
FullTransactionId ReadNextFullTransactionId | ( | void | ) |
Definition at line 261 of file varsup.c.
References LW_SHARED, LWLockAcquire(), LWLockRelease(), VariableCacheData::nextXid, and ShmemVariableCache.
Referenced by _bt_unlink_halfdead_page(), gistdeletepage(), pg_current_snapshot(), ReadNextTransactionId(), ResolveRecoveryConflictWithSnapshotFullXid(), TransactionIdInRecentPast(), and XLogWalRcvSendHSFeedback().
|
static |
Definition at line 596 of file varsup.c.
References elog(), ERROR, IsPostmasterEnvironment, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), VariableCacheData::nextOid, VariableCacheData::oidCount, and ShmemVariableCache.
Referenced by StopGeneratingPinnedObjectIds().
void SetTransactionIdLimit | ( | TransactionId | oldest_datfrozenxid, |
Oid | oldest_datoid | ||
) |
Definition at line 345 of file varsup.c.
References Assert(), autovacuum_freeze_max_age, DEBUG1, ereport, errhint(), errmsg(), errmsg_internal(), FirstNormalTransactionId, get_database_name(), InRecovery, IsTransactionState(), IsUnderPostmaster, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MaxTransactionId, VariableCacheData::nextXid, VariableCacheData::oldestXid, VariableCacheData::oldestXidDB, PMSIGNAL_START_AUTOVAC_LAUNCHER, SendPostmasterSignal(), ShmemVariableCache, TransactionIdFollowsOrEquals(), TransactionIdIsNormal, WARNING, XidFromFullTransactionId, VariableCacheData::xidStopLimit, VariableCacheData::xidVacLimit, VariableCacheData::xidWarnLimit, and VariableCacheData::xidWrapLimit.
Referenced by BootStrapXLOG(), StartupXLOG(), vac_truncate_clog(), and xlog_redo().
void StopGeneratingPinnedObjectIds | ( | void | ) |
Definition at line 625 of file varsup.c.
References FirstUnpinnedObjectId, and SetNextObjectId().
Referenced by pg_stop_making_pinned_objects().
VariableCache ShmemVariableCache = NULL |
Definition at line 34 of file varsup.c.
Referenced by ActivateCommitTs(), AdvanceNextFullTransactionIdPastXid(), AdvanceOldestClogXid(), AdvanceOldestCommitTsXid(), BootStrapXLOG(), ComputeXidHorizons(), CreateCheckPoint(), CreateSharedProcArray(), DeactivateCommitTs(), ExpireTreeKnownAssignedTransactionIds(), ForceTransactionIdLimitUpdate(), GetNewObjectId(), GetNewTransactionId(), GetOldestActiveTransactionId(), GetOldestSafeDecodingTransactionId(), GetRunningTransactionData(), GetSnapshotData(), GetSnapshotDataReuse(), InitShmemAllocation(), MaintainLatestCompletedXid(), MaintainLatestCompletedXidRecovery(), PrescanPreparedTransactions(), ProcArrayApplyRecoveryInfo(), ProcArrayClearTransaction(), ProcArrayEndTransactionInternal(), ProcArrayRemove(), ProcessTwoPhaseBuffer(), ReadNextFullTransactionId(), ReleasePredicateLocks(), SetCommitTsLimit(), SetNextObjectId(), SetTransactionIdLimit(), StartupCLOG(), StartupSUBTRANS(), StartupXLOG(), TransactionIdGetCommitTsData(), TransactionIdInRecentPast(), TransactionIdIsInProgress(), TransactionTreeSetCommitTsData(), TrimCLOG(), update_cached_xid_range(), XidCacheRemoveRunningXids(), xlog_redo(), and XLogRecGetFullXid().