PostgreSQL Source Code: src/include/access/commit_ts.h File Reference (original) (raw)
Go to the source code of this file.
Macros | |
---|---|
#define | COMMIT_TS_ZEROPAGE 0x00 |
#define | COMMIT_TS_TRUNCATE 0x10 |
#define | SizeOfCommitTsSet |
#define | SizeOfCommitTsTruncate |
◆ COMMIT_TS_TRUNCATE
#define COMMIT_TS_TRUNCATE 0x10
◆ COMMIT_TS_ZEROPAGE
#define COMMIT_TS_ZEROPAGE 0x00
◆ SizeOfCommitTsSet
#define SizeOfCommitTsSet
◆ SizeOfCommitTsTruncate
#define SizeOfCommitTsTruncate
◆ xl_commit_ts_set
◆ xl_commit_ts_truncate
◆ AdvanceOldestCommitTsXid()
◆ BootStrapCommitTs()
void BootStrapCommitTs | ( | void | ) |
---|
◆ CheckPointCommitTs()
void CheckPointCommitTs | ( | void | ) |
---|
◆ commit_ts_desc()
Definition at line 21 of file committsdesc.c.
22{
25
27 {
29
30 memcpy(&pageno, rec, sizeof(pageno));
32 }
34 {
36
39 }
40}
#define COMMIT_TS_ZEROPAGE
#define COMMIT_TS_TRUNCATE
void appendStringInfo(StringInfo str, const char *fmt,...)
#define XLogRecGetInfo(decoder)
#define XLogRecGetData(decoder)
References appendStringInfo(), buf, COMMIT_TS_TRUNCATE, COMMIT_TS_ZEROPAGE, xl_commit_ts_truncate::oldestXid, xl_commit_ts_truncate::pageno, XLogRecGetData, and XLogRecGetInfo.
◆ commit_ts_identify()
const char * commit_ts_identify | ( | uint8 | info | ) |
---|
◆ commit_ts_redo()
Definition at line 1016 of file commit_ts.c.
1017{
1019
1020
1022
1024 {
1026 int slotno;
1028
1029 memcpy(&pageno, XLogRecGetData(record), sizeof(pageno));
1030
1033
1037
1039 }
1041 {
1043
1045
1046
1047
1048
1049
1052
1054 }
1055 else
1056 elog(PANIC, "commit_ts_redo: unknown op code %u", info);
1057}
static void pg_atomic_write_u64(volatile pg_atomic_uint64 *ptr, uint64 val)
void AdvanceOldestCommitTsXid(TransactionId oldestXact)
static int ZeroCommitTsPage(int64 pageno, bool writeXlog)
Assert(PointerIsAligned(start, uint64))
void SimpleLruWritePage(SlruCtl ctl, int slotno)
void SimpleLruTruncate(SlruCtl ctl, int64 cutoffPage)
static LWLock * SimpleLruGetBankLock(SlruCtl ctl, int64 pageno)
#define XLogRecHasAnyBlockRefs(decoder)
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, pg_atomic_write_u64(), SimpleLruGetBankLock(), SimpleLruTruncate(), SimpleLruWritePage(), XLogRecGetData, XLogRecGetInfo, XLogRecHasAnyBlockRefs, and ZeroCommitTsPage().
◆ CommitTsParameterChange()
void CommitTsParameterChange | ( | bool | newvalue, |
---|---|---|---|
bool | oldvalue | ||
) |
◆ CommitTsShmemInit()
void CommitTsShmemInit | ( | void | ) |
---|
Definition at line 530 of file commit_ts.c.
531{
532 bool found;
533
534
536 {
537 char buf[32];
538
542
543
544
545
546
547
548
552 }
554
560 false);
562
565 &found);
566
568 {
570
575 }
576 else
578}
#define COMMIT_TS_XACTS_PER_PAGE
static int CommitTsShmemBuffers(void)
static bool CommitTsPagePrecedes(int64 page1, int64 page2)
#define TIMESTAMP_NOBEGIN(j)
int commit_timestamp_buffers
void SetConfigOption(const char *name, const char *value, GucContext context, GucSource source)
@ LWTRANCHE_COMMITTS_BUFFER
@ LWTRANCHE_COMMITTS_SLRU
#define InvalidRepOriginId
void * ShmemInitStruct(const char *name, Size size, bool *foundPtr)
void SimpleLruInit(SlruCtl ctl, const char *name, int nslots, int nlsns, const char *subdir, int buffer_tranche_id, int bank_tranche_id, SyncRequestHandler sync_handler, bool long_segment_names)
#define SlruPagePrecedesUnitTests(ctl, per_page)
References Assert(), buf, commit_timestamp_buffers, COMMIT_TS_XACTS_PER_PAGE, CommitTimestampShared::commitTsActive, CommitTsCtl, CommitTsPagePrecedes(), commitTsShared, CommitTsShmemBuffers(), CommitTimestampShared::dataLastCommit, InvalidRepOriginId, InvalidTransactionId, IsUnderPostmaster, LWTRANCHE_COMMITTS_BUFFER, LWTRANCHE_COMMITTS_SLRU, CommitTimestampEntry::nodeid, PGC_POSTMASTER, PGC_S_DYNAMIC_DEFAULT, PGC_S_OVERRIDE, SetConfigOption(), ShmemInitStruct(), SimpleLruInit(), SlruPagePrecedesUnitTests, snprintf, SYNC_HANDLER_COMMIT_TS, CommitTimestampEntry::time, TIMESTAMP_NOBEGIN, and CommitTimestampShared::xidLastCommit.
Referenced by CreateOrAttachShmemStructs().
◆ CommitTsShmemSize()
Size CommitTsShmemSize | ( | void | ) |
---|
◆ committssyncfiletag()
int committssyncfiletag | ( | const FileTag * | ftag, |
---|---|---|---|
char * | path | ||
) |
◆ CompleteCommitTsInitialization()
void CompleteCommitTsInitialization | ( | void | ) |
---|
◆ ExtendCommitTs()
Definition at line 842 of file commit_ts.c.
843{
846
847
848
849
850
851
854 return;
855
856
857
858
859
862 return;
863
865
867
869
870
872
874}
#define TransactionIdToCTsEntry(xid)
static int64 TransactionIdToCTsPage(TransactionId xid)
#define TransactionIdEquals(id1, id2)
#define FirstNormalTransactionId
References Assert(), CommitTimestampShared::commitTsActive, CommitTsCtl, commitTsShared, FirstNormalTransactionId, InRecovery, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), SimpleLruGetBankLock(), TransactionIdEquals, TransactionIdToCTsEntry, TransactionIdToCTsPage(), and ZeroCommitTsPage().
Referenced by GetNewTransactionId().
◆ GetLatestCommitTsData()
◆ SetCommitTsLimit()
◆ StartupCommitTs()
void StartupCommitTs | ( | void | ) |
---|
◆ TransactionIdGetCommitTsData()
Definition at line 274 of file commit_ts.c.
276{
279 int slotno;
283
286 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
287 errmsg("cannot retrieve commit timestamp for transaction %u", xid)));
289 {
290
291 *ts = 0;
292 if (nodeid)
293 *nodeid = 0;
294 return false;
295 }
296
298
299
302
303
304
305
306
308 {
310 if (nodeid)
312
314 return *ts != 0;
315 }
316
319
322
323
324
325
329 {
330 *ts = 0;
331 if (nodeid)
333 return false;
334 }
335
336
338 memcpy(&entry,
339 CommitTsCtl->shared->page_buffer[slotno] +
342
343 *ts = entry.time;
344 if (nodeid)
345 *nodeid = entry.nodeid;
346
348 return *ts != 0;
349}
#define SizeOfCommitTimestampEntry
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
int SimpleLruReadPage_ReadOnly(SlruCtl ctl, int64 pageno, TransactionId xid)
#define TransactionIdIsValid(xid)
#define TransactionIdIsNormal(xid)
References Assert(), CommitTimestampShared::commitTsActive, CommitTsCtl, commitTsShared, CommitTimestampShared::dataLastCommit, ereport, errcode(), errmsg(), ERROR, error_commit_ts_disabled(), InvalidRepOriginId, LW_SHARED, LWLockAcquire(), LWLockRelease(), TransamVariablesData::newestCommitTsXid, CommitTimestampEntry::nodeid, TransamVariablesData::oldestCommitTsXid, SimpleLruGetBankLock(), SimpleLruReadPage_ReadOnly(), SizeOfCommitTimestampEntry, CommitTimestampEntry::time, TransactionIdIsNormal, TransactionIdIsValid, TransactionIdPrecedes(), TransactionIdToCTsEntry, TransactionIdToCTsPage(), TransamVariables, and CommitTimestampShared::xidLastCommit.
Referenced by GetTupleTransactionInfo(), pg_xact_commit_timestamp(), and pg_xact_commit_timestamp_origin().
◆ TransactionTreeSetCommitTsData()
Definition at line 141 of file commit_ts.c.
144{
145 int i;
148
149
150
151
152
153
154
155
156
158 return;
159
160
161
162
163
164 if (nsubxids > 0)
165 newestXact = subxids[nsubxids - 1];
166 else
167 newestXact = xid;
168
169
170
171
172
173
174
175
176 headxid = xid;
177 i = 0;
178 for (;;)
179 {
181 int j;
182
183 for (j = i; j < nsubxids; j++)
184 {
186 break;
187 }
188
189
191 pageno);
192
193
194 if (j >= nsubxids)
195 break;
196
197
198
199
200
201 headxid = subxids[j];
203 }
204
205
210
211
215}
static void SetXidCommitTsInPage(TransactionId xid, int nsubxids, TransactionId *subxids, TimestampTz ts, RepOriginId nodeid, int64 pageno)
References CommitTimestampShared::commitTsActive, commitTsShared, CommitTimestampShared::dataLastCommit, i, j, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), TransamVariablesData::newestCommitTsXid, CommitTimestampEntry::nodeid, SetXidCommitTsInPage(), CommitTimestampEntry::time, TransactionIdPrecedes(), TransactionIdToCTsPage(), TransamVariables, and CommitTimestampShared::xidLastCommit.
Referenced by RecordTransactionCommit(), RecordTransactionCommitPrepared(), and xact_redo_commit().
◆ TruncateCommitTs()
Definition at line 883 of file commit_ts.c.
884{
885 int64 cutoffPage;
886
887
888
889
890
892
893
895 &cutoffPage))
896 return;
897
898
900
901
903}
static void WriteTruncateXlogRec(int64 pageno, TransactionId oldestXid)
bool SlruScanDirectory(SlruCtl ctl, SlruScanCallback callback, void *data)
bool SlruScanDirCbReportPresence(SlruCtl ctl, char *filename, int64 segpage, void *data)
References CommitTsCtl, SimpleLruTruncate(), SlruScanDirCbReportPresence(), SlruScanDirectory(), TransactionIdToCTsPage(), and WriteTruncateXlogRec().
Referenced by vac_truncate_clog().