31 #define VAR_OID_PREFETCH 8192
60 elog(
ERROR,
"cannot assign TransactionIds during a parallel operation");
76 elog(
ERROR,
"cannot assign TransactionIds during recovery");
128 (
errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
129 errmsg(
"database is not accepting commands to avoid wraparound data loss in database \"%s\"",
131 errhint(
"Stop the postmaster and vacuum that database in single-user mode.\n"
132 "You might also need to commit or roll back old prepared transactions, or drop stale replication slots.")));
135 (
errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
136 errmsg(
"database is not accepting commands to avoid wraparound data loss in database with OID %u",
138 errhint(
"Stop the postmaster and vacuum that database in single-user mode.\n"
139 "You might also need to commit or roll back old prepared transactions, or drop stale replication slots.")));
148 (
errmsg(
"database \"%s\" must be vacuumed within %u transactions",
151 errhint(
"To avoid a database shutdown, execute a database-wide VACUUM in that database.\n"
152 "You might also need to commit or roll back old prepared transactions, or drop stale replication slots.")));
155 (
errmsg(
"database with OID %u must be vacuumed within %u transactions",
158 errhint(
"To avoid a database shutdown, execute a database-wide VACUUM in that database.\n"
159 "You might also need to commit or roll back old prepared transactions, or drop stale replication slots.")));
332 oldest_datfrozenxid))
378 xidStopLimit = xidWrapLimit - 3000000;
392 xidWarnLimit = xidWrapLimit - 40000000;
428 (
errmsg_internal(
"transaction ID wrap limit is %u, limited by database with OID %u",
429 xidWrapLimit, oldest_datoid)));
445 char *oldest_datname;
459 oldest_datname = NULL;
463 (
errmsg(
"database \"%s\" must be vacuumed within %u transactions",
465 xidWrapLimit - curXid),
466 errhint(
"To avoid a database shutdown, execute a database-wide VACUUM in that database.\n"
467 "You might also need to commit or roll back old prepared transactions, or drop stale replication slots.")));
470 (
errmsg(
"database with OID %u must be vacuumed within %u transactions",
472 xidWrapLimit - curXid),
473 errhint(
"To avoid a database shutdown, execute a database-wide VACUUM in that database.\n"
474 "You might also need to commit or roll back old prepared transactions, or drop stale replication slots.")));
534 elog(
ERROR,
"cannot assign OIDs during recovery");
600 elog(
ERROR,
"cannot advance OID counter anymore");
606 elog(
ERROR,
"too late to advance OID counter to %u, it is now %u",
631 #ifdef USE_ASSERT_CHECKING
#define pg_memory_barrier()
#define pg_write_barrier()
int autovacuum_freeze_max_age
void ExtendCLOG(TransactionId newestXact)
void ExtendCommitTs(TransactionId newestXact)
char * get_database_name(Oid dbid)
int errmsg_internal(const char *fmt,...)
int errhint(const char *fmt,...)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
static const unsigned __int64 epoch
bool IsPostmasterEnvironment
Assert(fmt[strlen(fmt) - 1] !='\n')
bool LWLockAcquire(LWLock *lock, LWLockMode mode)
void LWLockRelease(LWLock *lock)
#define AmStartupProcess()
#define IsBootstrapProcessingMode()
void SendPostmasterSignal(PMSignalReason reason)
@ PMSIGNAL_START_AUTOVAC_LAUNCHER
#define ObjectIdGetDatum(X)
#define PGPROC_MAX_CACHED_SUBXIDS
XidCacheStatus subxidStatus
XidCacheStatus * subxidStates
FullTransactionId nextXid
TransactionId xidWrapLimit
TransactionId xidWarnLimit
TransactionId oldestClogXid
TransactionId xidStopLimit
TransactionId xidVacLimit
TransactionId xids[PGPROC_MAX_CACHED_SUBXIDS]
void ExtendSUBTRANS(TransactionId newestXact)
#define SearchSysCacheExists1(cacheId, key1)
bool TransactionIdPrecedes(TransactionId id1, TransactionId id2)
bool TransactionIdPrecedesOrEquals(TransactionId id1, TransactionId id2)
bool TransactionIdFollowsOrEquals(TransactionId id1, TransactionId id2)
#define FirstUnpinnedObjectId
#define EpochFromFullTransactionId(x)
#define AssertTransactionIdInAllowableRange(xid)
#define BootstrapTransactionId
#define XidFromFullTransactionId(x)
#define FirstGenbkiObjectId
#define FirstNormalTransactionId
static void FullTransactionIdAdvance(FullTransactionId *dest)
#define FirstNormalObjectId
#define TransactionIdIsValid(xid)
static FullTransactionId FullTransactionIdFromEpochAndXid(uint32 epoch, TransactionId xid)
#define TransactionIdIsNormal(xid)
#define TransactionIdAdvance(dest)
static void SetNextObjectId(Oid nextOid)
FullTransactionId ReadNextFullTransactionId(void)
void AdvanceNextFullTransactionIdPastXid(TransactionId xid)
void SetTransactionIdLimit(TransactionId oldest_datfrozenxid, Oid oldest_datoid)
FullTransactionId GetNewTransactionId(bool isSubXact)
void StopGeneratingPinnedObjectIds(void)
bool ForceTransactionIdLimitUpdate(void)
void AdvanceOldestClogXid(TransactionId oldest_datfrozenxid)
VariableCache ShmemVariableCache
bool IsTransactionState(void)
bool IsInParallelMode(void)
bool RecoveryInProgress(void)
void XLogPutNextOid(Oid nextOid)