PostgreSQL Source Code
git master
|
#include "postgres.h"
#include "access/commit_ts.h"
#include "access/htup_details.h"
#include "access/slru.h"
#include "access/transam.h"
#include "access/xloginsert.h"
#include "access/xlogutils.h"
#include "catalog/pg_type.h"
#include "funcapi.h"
#include "miscadmin.h"
#include "pg_trace.h"
#include "storage/shmem.h"
#include "utils/builtins.h"
#include "utils/snapmgr.h"
#include "utils/timestamp.h"
Go to the source code of this file.
Data Structures | |
struct | CommitTimestampEntry |
struct | CommitTimestampShared |
Macros | |
#define | SizeOfCommitTimestampEntry |
#define | COMMIT_TS_XACTS_PER_PAGE (BLCKSZ / SizeOfCommitTimestampEntry) |
#define | TransactionIdToCTsPage(xid) ((xid) / (TransactionId) COMMIT_TS_XACTS_PER_PAGE) |
#define | TransactionIdToCTsEntry(xid) ((xid) % (TransactionId) COMMIT_TS_XACTS_PER_PAGE) |
#define | CommitTsCtl (&CommitTsCtlData) |
Typedefs | |
typedef struct CommitTimestampEntry | CommitTimestampEntry |
typedef struct CommitTimestampShared | CommitTimestampShared |
Variables | |
static SlruCtlData | CommitTsCtlData |
static CommitTimestampShared * | commitTsShared |
bool | track_commit_timestamp |
#define COMMIT_TS_XACTS_PER_PAGE (BLCKSZ / SizeOfCommitTimestampEntry) |
Definition at line 65 of file commit_ts.c.
#define CommitTsCtl (&CommitTsCtlData) |
Definition at line 78 of file commit_ts.c.
#define SizeOfCommitTimestampEntry |
Definition at line 62 of file commit_ts.c.
#define TransactionIdToCTsEntry | ( | xid | ) | ((xid) % (TransactionId) COMMIT_TS_XACTS_PER_PAGE) |
Definition at line 70 of file commit_ts.c.
#define TransactionIdToCTsPage | ( | xid | ) | ((xid) / (TransactionId) COMMIT_TS_XACTS_PER_PAGE) |
Definition at line 68 of file commit_ts.c.
typedef struct CommitTimestampEntry CommitTimestampEntry |
typedef struct CommitTimestampShared CommitTimestampShared |
|
static |
Definition at line 662 of file commit_ts.c.
References Assert(), CommitTimestampShared::commitTsActive, CommitTsCtl, commitTsShared, InvalidTransactionId, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), VariableCacheData::newestCommitTsXid, VariableCacheData::nextXid, VariableCacheData::oldestCommitTsXid, ReadNextTransactionId(), ShmemVariableCache, SimpleLruDoesPhysicalPageExist(), SimpleLruWritePage(), TransactionIdToCTsPage, XidFromFullTransactionId, and ZeroCommitTsPage().
Referenced by CommitTsParameterChange(), CompleteCommitTsInitialization(), and StartupCommitTs().
void AdvanceOldestCommitTsXid | ( | TransactionId | oldestXact | ) |
Definition at line 887 of file commit_ts.c.
References InvalidTransactionId, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), VariableCacheData::oldestCommitTsXid, ShmemVariableCache, and TransactionIdPrecedes().
Referenced by commit_ts_redo(), and vac_truncate_clog().
void BootStrapCommitTs | ( | void | ) |
void CheckPointCommitTs | ( | void | ) |
Definition at line 774 of file commit_ts.c.
References CommitTsCtl, and SimpleLruWriteAll().
Referenced by CheckPointGuts().
void commit_ts_redo | ( | XLogReaderState * | record | ) |
Definition at line 967 of file commit_ts.c.
References AdvanceOldestCommitTsXid(), Assert(), COMMIT_TS_TRUNCATE, COMMIT_TS_ZEROPAGE, CommitTsCtl, elog(), LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), xl_commit_ts_truncate::oldestXid, xl_commit_ts_truncate::pageno, PANIC, SimpleLruTruncate(), SimpleLruWritePage(), XLogRecGetData, XLogRecGetInfo, XLogRecHasAnyBlockRefs, XLR_INFO_MASK, and ZeroCommitTsPage().
|
static |
Definition at line 921 of file commit_ts.c.
References COMMIT_TS_XACTS_PER_PAGE, FirstNormalTransactionId, and TransactionIdPrecedes().
Referenced by CommitTsShmemInit().
Definition at line 621 of file commit_ts.c.
References ActivateCommitTs(), CommitTimestampShared::commitTsActive, commitTsShared, and DeactivateCommitTs().
Referenced by xlog_redo().
Size CommitTsShmemBuffers | ( | void | ) |
Definition at line 498 of file commit_ts.c.
References Max, Min, and NBuffers.
Referenced by CommitTsShmemInit(), and CommitTsShmemSize().
void CommitTsShmemInit | ( | void | ) |
Definition at line 518 of file commit_ts.c.
References Assert(), COMMIT_TS_XACTS_PER_PAGE, CommitTimestampShared::commitTsActive, CommitTsCtl, CommitTsPagePrecedes(), commitTsShared, CommitTsShmemBuffers(), CommitTimestampShared::dataLastCommit, InvalidRepOriginId, InvalidTransactionId, IsUnderPostmaster, LWTRANCHE_COMMITTS_BUFFER, CommitTimestampEntry::nodeid, ShmemInitStruct(), SimpleLruInit(), SlruPagePrecedesUnitTests, SYNC_HANDLER_COMMIT_TS, CommitTimestampEntry::time, TIMESTAMP_NOBEGIN, and CommitTimestampShared::xidLastCommit.
Referenced by CreateSharedMemoryAndSemaphores().
Size CommitTsShmemSize | ( | void | ) |
Definition at line 507 of file commit_ts.c.
References CommitTsShmemBuffers(), and SimpleLruShmemSize().
Referenced by CalculateShmemSize().
int committssyncfiletag | ( | const FileTag * | ftag, |
char * | path | ||
) |
Definition at line 1011 of file commit_ts.c.
References CommitTsCtl, and SlruSyncFileTag().
void CompleteCommitTsInitialization | ( | void | ) |
Definition at line 599 of file commit_ts.c.
References ActivateCommitTs(), DeactivateCommitTs(), and track_commit_timestamp.
Referenced by StartupXLOG().
|
static |
Definition at line 736 of file commit_ts.c.
References CommitTimestampShared::commitTsActive, CommitTsCtl, commitTsShared, CommitTimestampShared::dataLastCommit, InvalidRepOriginId, InvalidTransactionId, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), VariableCacheData::newestCommitTsXid, CommitTimestampEntry::nodeid, VariableCacheData::oldestCommitTsXid, ShmemVariableCache, SlruScanDirCbDeleteAll(), SlruScanDirectory(), CommitTimestampEntry::time, TIMESTAMP_NOBEGIN, and CommitTimestampShared::xidLastCommit.
Referenced by CommitTsParameterChange(), and CompleteCommitTsInitialization().
|
static |
Definition at line 373 of file commit_ts.c.
References ereport, errcode(), errhint(), errmsg(), ERROR, and RecoveryInProgress().
Referenced by GetLatestCommitTsData(), and TransactionIdGetCommitTsData().
void ExtendCommitTs | ( | TransactionId | newestXact | ) |
Definition at line 796 of file commit_ts.c.
References Assert(), CommitTimestampShared::commitTsActive, commitTsShared, FirstNormalTransactionId, InRecovery, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), TransactionIdEquals, TransactionIdToCTsEntry, TransactionIdToCTsPage, and ZeroCommitTsPage().
Referenced by GetNewTransactionId().
TransactionId GetLatestCommitTsData | ( | TimestampTz * | ts, |
RepOriginId * | nodeid | ||
) |
Definition at line 352 of file commit_ts.c.
References CommitTimestampShared::commitTsActive, commitTsShared, CommitTimestampShared::dataLastCommit, error_commit_ts_disabled(), LW_SHARED, LWLockAcquire(), LWLockRelease(), CommitTimestampEntry::nodeid, CommitTimestampEntry::time, and CommitTimestampShared::xidLastCommit.
Referenced by pg_last_committed_xact().
Datum pg_last_committed_xact | ( | PG_FUNCTION_ARGS | ) |
Definition at line 412 of file commit_ts.c.
References elog(), ERROR, get_call_result_type(), GetLatestCommitTsData(), heap_form_tuple(), HeapTupleGetDatum(), ObjectIdGetDatum(), PG_RETURN_DATUM, TimestampTzGetDatum(), TransactionIdGetDatum(), TransactionIdIsNormal, TYPEFUNC_COMPOSITE, and values.
Datum pg_xact_commit_timestamp | ( | PG_FUNCTION_ARGS | ) |
Definition at line 389 of file commit_ts.c.
References PG_GETARG_TRANSACTIONID, PG_RETURN_NULL, PG_RETURN_TIMESTAMPTZ, and TransactionIdGetCommitTsData().
Datum pg_xact_commit_timestamp_origin | ( | PG_FUNCTION_ARGS | ) |
Definition at line 456 of file commit_ts.c.
References elog(), ERROR, get_call_result_type(), heap_form_tuple(), HeapTupleGetDatum(), ObjectIdGetDatum(), PG_GETARG_TRANSACTIONID, PG_RETURN_DATUM, TimestampTzGetDatum(), TransactionIdGetCommitTsData(), TYPEFUNC_COMPOSITE, and values.
void SetCommitTsLimit | ( | TransactionId | oldestXact, |
TransactionId | newestXact | ||
) |
Definition at line 860 of file commit_ts.c.
References Assert(), InvalidTransactionId, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), VariableCacheData::newestCommitTsXid, VariableCacheData::oldestCommitTsXid, ShmemVariableCache, and TransactionIdPrecedes().
Referenced by BootStrapXLOG(), and StartupXLOG().
|
static |
Definition at line 215 of file commit_ts.c.
References CommitTsCtl, i, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), SimpleLruReadPage(), and TransactionIdSetCommitTs().
Referenced by TransactionTreeSetCommitTsData().
void StartupCommitTs | ( | void | ) |
Definition at line 589 of file commit_ts.c.
References ActivateCommitTs().
Referenced by StartupXLOG().
bool TransactionIdGetCommitTsData | ( | TransactionId | xid, |
TimestampTz * | ts, | ||
RepOriginId * | nodeid | ||
) |
Definition at line 266 of file commit_ts.c.
References Assert(), CommitTimestampShared::commitTsActive, CommitTsCtl, commitTsShared, CommitTimestampShared::dataLastCommit, ereport, errcode(), errmsg(), ERROR, error_commit_ts_disabled(), InvalidRepOriginId, LW_SHARED, LWLockAcquire(), LWLockRelease(), VariableCacheData::newestCommitTsXid, CommitTimestampEntry::nodeid, VariableCacheData::oldestCommitTsXid, ShmemVariableCache, SimpleLruReadPage_ReadOnly(), SizeOfCommitTimestampEntry, CommitTimestampEntry::time, TransactionIdIsNormal, TransactionIdIsValid, TransactionIdPrecedes(), TransactionIdToCTsEntry, TransactionIdToCTsPage, and CommitTimestampShared::xidLastCommit.
Referenced by pg_xact_commit_timestamp(), and pg_xact_commit_timestamp_origin().
|
static |
Definition at line 241 of file commit_ts.c.
References Assert(), CommitTsCtl, CommitTimestampEntry::nodeid, SizeOfCommitTimestampEntry, CommitTimestampEntry::time, TransactionIdIsNormal, and TransactionIdToCTsEntry.
Referenced by SetXidCommitTsInPage().
void TransactionTreeSetCommitTsData | ( | TransactionId | xid, |
int | nsubxids, | ||
TransactionId * | subxids, | ||
TimestampTz | timestamp, | ||
RepOriginId | nodeid | ||
) |
Definition at line 134 of file commit_ts.c.
References CommitTimestampShared::commitTsActive, commitTsShared, CommitTimestampShared::dataLastCommit, i, j, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), VariableCacheData::newestCommitTsXid, CommitTimestampEntry::nodeid, SetXidCommitTsInPage(), ShmemVariableCache, CommitTimestampEntry::time, TransactionIdPrecedes(), TransactionIdToCTsPage, and CommitTimestampShared::xidLastCommit.
Referenced by RecordTransactionCommit(), RecordTransactionCommitPrepared(), and xact_redo_commit().
void TruncateCommitTs | ( | TransactionId | oldestXact | ) |
Definition at line 834 of file commit_ts.c.
References CommitTsCtl, SimpleLruTruncate(), SlruScanDirCbReportPresence(), SlruScanDirectory(), TransactionIdToCTsPage, and WriteTruncateXlogRec().
Referenced by vac_truncate_clog().
|
static |
Definition at line 951 of file commit_ts.c.
References COMMIT_TS_TRUNCATE, xl_commit_ts_truncate::oldestXid, xl_commit_ts_truncate::pageno, SizeOfCommitTsTruncate, XLogBeginInsert(), XLogInsert(), and XLogRegisterData().
Referenced by TruncateCommitTs().
|
static |
Definition at line 940 of file commit_ts.c.
References COMMIT_TS_ZEROPAGE, XLogBeginInsert(), XLogInsert(), and XLogRegisterData().
Referenced by ZeroCommitTsPage().
|
static |
Definition at line 572 of file commit_ts.c.
References CommitTsCtl, SimpleLruZeroPage(), and WriteZeroPageXlogRec().
Referenced by ActivateCommitTs(), commit_ts_redo(), and ExtendCommitTs().
|
static |
Definition at line 76 of file commit_ts.c.
|
static |
Definition at line 98 of file commit_ts.c.
Referenced by ActivateCommitTs(), CommitTsParameterChange(), CommitTsShmemInit(), DeactivateCommitTs(), ExtendCommitTs(), GetLatestCommitTsData(), TransactionIdGetCommitTsData(), and TransactionTreeSetCommitTsData().
bool track_commit_timestamp |
Definition at line 102 of file commit_ts.c.
Referenced by CompleteCommitTsInitialization(), InitControlFile(), and XLogReportParameters().