mirror of
https://github.com/postgres/postgres.git
synced 2025-07-15 19:21:59 +03:00
pgindent run for 9.0
This commit is contained in:
@ -10,7 +10,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/access/transam/xact.c,v 1.288 2010/02/20 21:24:01 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/access/transam/xact.c,v 1.289 2010/02/26 02:00:34 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -139,9 +139,9 @@ typedef struct TransactionStateData
|
||||
int nChildXids; /* # of subcommitted child XIDs */
|
||||
int maxChildXids; /* allocated size of childXids[] */
|
||||
Oid prevUser; /* previous CurrentUserId setting */
|
||||
int prevSecContext; /* previous SecurityRestrictionContext */
|
||||
int prevSecContext; /* previous SecurityRestrictionContext */
|
||||
bool prevXactReadOnly; /* entry-time xact r/o state */
|
||||
bool startedInRecovery; /* did we start in recovery? */
|
||||
bool startedInRecovery; /* did we start in recovery? */
|
||||
struct TransactionStateData *parent; /* back link to parent */
|
||||
} TransactionStateData;
|
||||
|
||||
@ -178,7 +178,7 @@ static TransactionStateData TopTransactionStateData = {
|
||||
* unreportedXids holds XIDs of all subtransactions that have not yet been
|
||||
* reported in a XLOG_XACT_ASSIGNMENT record.
|
||||
*/
|
||||
static int nUnreportedXids;
|
||||
static int nUnreportedXids;
|
||||
static TransactionId unreportedXids[PGPROC_MAX_CACHED_SUBXIDS];
|
||||
|
||||
static TransactionState CurrentTransactionState = &TopTransactionStateData;
|
||||
@ -452,25 +452,28 @@ AssignTransactionId(TransactionState s)
|
||||
* include the top-level xid and all the subxids that have not yet been
|
||||
* reported using XLOG_XACT_ASSIGNMENT records.
|
||||
*
|
||||
* This is required to limit the amount of shared memory required in a
|
||||
* hot standby server to keep track of in-progress XIDs. See notes for
|
||||
* This is required to limit the amount of shared memory required in a hot
|
||||
* standby server to keep track of in-progress XIDs. See notes for
|
||||
* RecordKnownAssignedTransactionIds().
|
||||
*
|
||||
* We don't keep track of the immediate parent of each subxid,
|
||||
* only the top-level transaction that each subxact belongs to. This
|
||||
* is correct in recovery only because aborted subtransactions are
|
||||
* separately WAL logged.
|
||||
* We don't keep track of the immediate parent of each subxid, only the
|
||||
* top-level transaction that each subxact belongs to. This is correct in
|
||||
* recovery only because aborted subtransactions are separately WAL
|
||||
* logged.
|
||||
*/
|
||||
if (isSubXact && XLogStandbyInfoActive())
|
||||
{
|
||||
unreportedXids[nUnreportedXids] = s->transactionId;
|
||||
nUnreportedXids++;
|
||||
|
||||
/* ensure this test matches similar one in RecoverPreparedTransactions() */
|
||||
/*
|
||||
* ensure this test matches similar one in
|
||||
* RecoverPreparedTransactions()
|
||||
*/
|
||||
if (nUnreportedXids >= PGPROC_MAX_CACHED_SUBXIDS)
|
||||
{
|
||||
XLogRecData rdata[2];
|
||||
xl_xact_assignment xlrec;
|
||||
xl_xact_assignment xlrec;
|
||||
|
||||
/*
|
||||
* xtop is always set by now because we recurse up transaction
|
||||
@ -899,6 +902,7 @@ RecordTransactionCommit(void)
|
||||
nchildren = xactGetCommittedChildren(&children);
|
||||
nmsgs = xactGetCommittedInvalidationMessages(&invalMessages,
|
||||
&RelcacheInitFileInval);
|
||||
|
||||
/*
|
||||
* If we haven't been assigned an XID yet, we neither can, nor do we want
|
||||
* to write a COMMIT record.
|
||||
@ -1098,10 +1102,9 @@ static void
|
||||
AtCCI_LocalCache(void)
|
||||
{
|
||||
/*
|
||||
* Make any pending relation map changes visible. We must do this
|
||||
* before processing local sinval messages, so that the map changes
|
||||
* will get reflected into the relcache when relcache invals are
|
||||
* processed.
|
||||
* Make any pending relation map changes visible. We must do this before
|
||||
* processing local sinval messages, so that the map changes will get
|
||||
* reflected into the relcache when relcache invals are processed.
|
||||
*/
|
||||
AtCCI_RelationMap();
|
||||
|
||||
@ -1227,9 +1230,9 @@ AtSubCommit_childXids(void)
|
||||
*
|
||||
* Note: We rely on the fact that the XID of a child always follows that
|
||||
* of its parent. By copying the XID of this subtransaction before the
|
||||
* XIDs of its children, we ensure that the array stays ordered.
|
||||
* Likewise, all XIDs already in the array belong to subtransactions
|
||||
* started and subcommitted before us, so their XIDs must precede ours.
|
||||
* XIDs of its children, we ensure that the array stays ordered. Likewise,
|
||||
* all XIDs already in the array belong to subtransactions started and
|
||||
* subcommitted before us, so their XIDs must precede ours.
|
||||
*/
|
||||
s->parent->childXids[s->parent->nChildXids] = s->transactionId;
|
||||
|
||||
@ -1457,10 +1460,10 @@ AtSubAbort_childXids(void)
|
||||
s->maxChildXids = 0;
|
||||
|
||||
/*
|
||||
* We could prune the unreportedXids array here. But we don't bother.
|
||||
* That would potentially reduce number of XLOG_XACT_ASSIGNMENT records
|
||||
* but it would likely introduce more CPU time into the more common
|
||||
* paths, so we choose not to do that.
|
||||
* We could prune the unreportedXids array here. But we don't bother. That
|
||||
* would potentially reduce number of XLOG_XACT_ASSIGNMENT records but it
|
||||
* would likely introduce more CPU time into the more common paths, so we
|
||||
* choose not to do that.
|
||||
*/
|
||||
}
|
||||
|
||||
@ -2162,7 +2165,7 @@ AbortTransaction(void)
|
||||
/*
|
||||
* do abort processing
|
||||
*/
|
||||
AfterTriggerEndXact(false); /* 'false' means it's abort */
|
||||
AfterTriggerEndXact(false); /* 'false' means it's abort */
|
||||
AtAbort_Portals();
|
||||
AtEOXact_LargeObject(false);
|
||||
AtAbort_Notify();
|
||||
@ -4362,9 +4365,9 @@ xact_redo_commit(xl_xact_commit *xlrec, TransactionId xid, XLogRecPtr lsn)
|
||||
/*
|
||||
* Make sure nextXid is beyond any XID mentioned in the record.
|
||||
*
|
||||
* We don't expect anyone else to modify nextXid, hence we
|
||||
* don't need to hold a lock while checking this. We still acquire
|
||||
* the lock to modify it, though.
|
||||
* We don't expect anyone else to modify nextXid, hence we don't need to
|
||||
* hold a lock while checking this. We still acquire the lock to modify
|
||||
* it, though.
|
||||
*/
|
||||
if (TransactionIdFollowsOrEquals(max_xid,
|
||||
ShmemVariableCache->nextXid))
|
||||
@ -4400,8 +4403,8 @@ xact_redo_commit(xl_xact_commit *xlrec, TransactionId xid, XLogRecPtr lsn)
|
||||
* protocol during recovery to provide information on database
|
||||
* consistency for when users try to set hint bits. It is important
|
||||
* that we do not set hint bits until the minRecoveryPoint is past
|
||||
* this commit record. This ensures that if we crash we don't see
|
||||
* hint bits set on changes made by transactions that haven't yet
|
||||
* this commit record. This ensures that if we crash we don't see hint
|
||||
* bits set on changes made by transactions that haven't yet
|
||||
* recovered. It's unlikely but it's good to be safe.
|
||||
*/
|
||||
TransactionIdAsyncCommitTree(xid, xlrec->nsubxacts, sub_xids, lsn);
|
||||
@ -4413,17 +4416,17 @@ xact_redo_commit(xl_xact_commit *xlrec, TransactionId xid, XLogRecPtr lsn)
|
||||
|
||||
/*
|
||||
* Send any cache invalidations attached to the commit. We must
|
||||
* maintain the same order of invalidation then release locks
|
||||
* as occurs in .
|
||||
* maintain the same order of invalidation then release locks as
|
||||
* occurs in .
|
||||
*/
|
||||
ProcessCommittedInvalidationMessages(inval_msgs, xlrec->nmsgs,
|
||||
XactCompletionRelcacheInitFileInval(xlrec),
|
||||
xlrec->dbId, xlrec->tsId);
|
||||
XactCompletionRelcacheInitFileInval(xlrec),
|
||||
xlrec->dbId, xlrec->tsId);
|
||||
|
||||
/*
|
||||
* Release locks, if any. We do this for both two phase and normal
|
||||
* one phase transactions. In effect we are ignoring the prepare
|
||||
* phase and just going straight to lock release.
|
||||
* Release locks, if any. We do this for both two phase and normal one
|
||||
* phase transactions. In effect we are ignoring the prepare phase and
|
||||
* just going straight to lock release.
|
||||
*/
|
||||
StandbyReleaseLockTree(xid, xlrec->nsubxacts, sub_xids);
|
||||
}
|
||||
@ -4446,15 +4449,16 @@ xact_redo_commit(xl_xact_commit *xlrec, TransactionId xid, XLogRecPtr lsn)
|
||||
}
|
||||
|
||||
/*
|
||||
* We issue an XLogFlush() for the same reason we emit ForceSyncCommit() in
|
||||
* normal operation. For example, in DROP DATABASE, we delete all the files
|
||||
* belonging to the database, and then commit the transaction. If we crash
|
||||
* after all the files have been deleted but before the commit, you have an
|
||||
* entry in pg_database without any files. To minimize the window for that,
|
||||
* we use ForceSyncCommit() to rush the commit record to disk as quick as
|
||||
* possible. We have the same window during recovery, and forcing an
|
||||
* XLogFlush() (which updates minRecoveryPoint during recovery) helps
|
||||
* to reduce that problem window, for any user that requested ForceSyncCommit().
|
||||
* We issue an XLogFlush() for the same reason we emit ForceSyncCommit()
|
||||
* in normal operation. For example, in DROP DATABASE, we delete all the
|
||||
* files belonging to the database, and then commit the transaction. If we
|
||||
* crash after all the files have been deleted but before the commit, you
|
||||
* have an entry in pg_database without any files. To minimize the window
|
||||
* for that, we use ForceSyncCommit() to rush the commit record to disk as
|
||||
* quick as possible. We have the same window during recovery, and forcing
|
||||
* an XLogFlush() (which updates minRecoveryPoint during recovery) helps
|
||||
* to reduce that problem window, for any user that requested
|
||||
* ForceSyncCommit().
|
||||
*/
|
||||
if (XactCompletionForceSyncCommit(xlrec))
|
||||
XLogFlush(lsn);
|
||||
@ -4480,9 +4484,11 @@ xact_redo_abort(xl_xact_abort *xlrec, TransactionId xid)
|
||||
max_xid = TransactionIdLatest(xid, xlrec->nsubxacts, sub_xids);
|
||||
|
||||
/* Make sure nextXid is beyond any XID mentioned in the record */
|
||||
/* We don't expect anyone else to modify nextXid, hence we
|
||||
* don't need to hold a lock while checking this. We still acquire
|
||||
* the lock to modify it, though.
|
||||
|
||||
/*
|
||||
* We don't expect anyone else to modify nextXid, hence we don't need to
|
||||
* hold a lock while checking this. We still acquire the lock to modify
|
||||
* it, though.
|
||||
*/
|
||||
if (TransactionIdFollowsOrEquals(max_xid,
|
||||
ShmemVariableCache->nextXid))
|
||||
@ -4496,12 +4502,13 @@ xact_redo_abort(xl_xact_abort *xlrec, TransactionId xid)
|
||||
if (InHotStandby)
|
||||
{
|
||||
/*
|
||||
* If a transaction completion record arrives that has as-yet unobserved
|
||||
* subtransactions then this will not have been fully handled by the call
|
||||
* to RecordKnownAssignedTransactionIds() in the main recovery loop in
|
||||
* xlog.c. So we need to do bookkeeping again to cover that case. This is
|
||||
* confusing and it is easy to think this call is irrelevant, which has
|
||||
* happened three times in development already. Leave it in.
|
||||
* If a transaction completion record arrives that has as-yet
|
||||
* unobserved subtransactions then this will not have been fully
|
||||
* handled by the call to RecordKnownAssignedTransactionIds() in the
|
||||
* main recovery loop in xlog.c. So we need to do bookkeeping again to
|
||||
* cover that case. This is confusing and it is easy to think this
|
||||
* call is irrelevant, which has happened three times in development
|
||||
* already. Leave it in.
|
||||
*/
|
||||
RecordKnownAssignedTransactionIds(max_xid);
|
||||
}
|
||||
@ -4631,8 +4638,8 @@ xact_desc_commit(StringInfo buf, xl_xact_commit *xlrec)
|
||||
msgs = (SharedInvalidationMessage *) &xacts[xlrec->nsubxacts];
|
||||
|
||||
if (XactCompletionRelcacheInitFileInval(xlrec))
|
||||
appendStringInfo(buf, "; relcache init file inval dbid %u tsid %u",
|
||||
xlrec->dbId, xlrec->tsId);
|
||||
appendStringInfo(buf, "; relcache init file inval dbid %u tsid %u",
|
||||
xlrec->dbId, xlrec->tsId);
|
||||
|
||||
appendStringInfo(buf, "; inval msgs:");
|
||||
for (i = 0; i < xlrec->nmsgs; i++)
|
||||
@ -4738,8 +4745,8 @@ xact_desc(StringInfo buf, uint8 xl_info, char *rec)
|
||||
|
||||
/*
|
||||
* Note that we ignore the WAL record's xid, since we're more
|
||||
* interested in the top-level xid that issued the record
|
||||
* and which xids are being reported here.
|
||||
* interested in the top-level xid that issued the record and which
|
||||
* xids are being reported here.
|
||||
*/
|
||||
appendStringInfo(buf, "xid assignment xtop %u: ", xlrec->xtop);
|
||||
xact_desc_assignment(buf, xlrec);
|
||||
|
Reference in New Issue
Block a user