55#define SUBTRANS_XACTS_PER_PAGE (BLCKSZ / sizeof(TransactionId))
67#define TransactionIdToEntry(xid) ((xid) % (TransactionId) SUBTRANS_XACTS_PER_PAGE)
85#define SubTransCtl (&SubTransSlruDesc)
191 elog(
ERROR,
"pg_subtrans contains invalid entry: xid %u points to parent xid %u",
247 .
name =
"subtransaction",
248 .Dir =
"pg_subtrans",
249 .long_segment_names =
false,
447 return errdetail(
"Could not access subtransaction status of transaction %u.", xid);
#define Assert(condition)
int errdetail(const char *fmt,...) pg_attribute_printf(1
int subtransaction_buffers
void SetConfigOption(const char *name, const char *value, GucContext context, GucSource source)
bool LWLockAcquire(LWLock *lock, LWLockMode mode)
void LWLockRelease(LWLock *lock)
static rewind_source * source
static char buf[DEFAULT_XLOG_SEG_SIZE]
int SimpleLruReadPage_ReadOnly(SlruDesc *ctl, int64 pageno, const void *opaque_data)
int SimpleLruAutotuneBuffers(int divisor, int max)
void SimpleLruTruncate(SlruDesc *ctl, int64 cutoffPage)
void SimpleLruZeroAndWritePage(SlruDesc *ctl, int64 pageno)
int SimpleLruZeroPage(SlruDesc *ctl, int64 pageno)
void SimpleLruWriteAll(SlruDesc *ctl, bool allow_redirtied)
int SimpleLruReadPage(SlruDesc *ctl, int64 pageno, bool write_ok, const void *opaque_data)
bool check_slru_buffers(const char *name, int *newval)
#define SlruPagePrecedesUnitTests(ctl, per_page)
#define SimpleLruRequest(...)
#define SLRU_MAX_ALLOWED_BUFFERS
static LWLock * SimpleLruGetBankLock(SlruDesc *ctl, int64 pageno)
TransactionId TransactionXmin
ShmemRequestCallback request_fn
FullTransactionId nextXid
static void SUBTRANSShmemInit(void *arg)
const ShmemCallbacks SUBTRANSShmemCallbacks
static int subtrans_errdetail_for_io_error(const void *opaque_data)
bool check_subtrans_buffers(int *newval, void **extra, GucSource source)
static SlruDesc SubTransSlruDesc
static void SUBTRANSShmemRequest(void *arg)
void SubTransSetParent(TransactionId xid, TransactionId parent)
TransactionId SubTransGetTopmostTransaction(TransactionId xid)
#define SUBTRANS_XACTS_PER_PAGE
#define TransactionIdToEntry(xid)
void ExtendSUBTRANS(TransactionId newestXact)
void StartupSUBTRANS(TransactionId oldestActiveXID)
void CheckPointSUBTRANS(void)
static int SUBTRANSShmemBuffers(void)
TransactionId SubTransGetParent(TransactionId xid)
static bool SubTransPagePrecedes(int64 page1, int64 page2)
static int64 TransactionIdToPage(TransactionId xid)
void BootStrapSUBTRANS(void)
void TruncateSUBTRANS(TransactionId oldestXact)
static bool TransactionIdFollows(TransactionId id1, TransactionId id2)
#define TransactionIdRetreat(dest)
#define InvalidTransactionId
static bool TransactionIdFollowsOrEquals(TransactionId id1, TransactionId id2)
#define TransactionIdEquals(id1, id2)
#define XidFromFullTransactionId(x)
#define FirstNormalTransactionId
#define TransactionIdIsValid(xid)
#define TransactionIdIsNormal(xid)
static bool TransactionIdPrecedes(TransactionId id1, TransactionId id2)
TransamVariablesData * TransamVariables