postgres.git / summary / log / commit / refs

commit    d6968e625770d021c8db15094ea732b40be2c5aa
Author:   Alvaro Herrera <alvherre@alvh.no-ip.org>
Date:     Fri Aug 21 17:36:54 2015 +0000
First released in: 9.6.0, 9.5.0

    Do not allow *timestamp to be passed as NULL
    
    The code had bugs that would cause crashes if NULL was passed as that
    argument (originally intended to mean not to bother returning its
    value), and after inspection it turns out that nothing seems interested
    in the case that *ts is NULL anyway.  Therefore, remove the partial
    checks intended to support that case.
    
    Author: Michael Paquier
    though I didn't include a proposed Assert.
    
    Backpatch to 9.5.


src/backend/access/transam/commit_ts.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/backend/access/transam/commit_ts.c b/src/backend/access/transam/commit_ts.c index 5ad35c0d7f8..33136e3c1d9 100644 --- a/src/backend/access/transam/commit_ts.c +++ b/src/backend/access/transam/commit_ts.c @@ -252,8 +252,10 @@ TransactionIdSetCommitTs(TransactionId xid, TimestampTz ts, /* * Interrogate the commit timestamp of a transaction. * - * Return value indicates whether commit timestamp record was found for - * given xid. + * The return value indicates whether a commit timestamp record was found for + * the given xid. The timestamp value is returned in *ts (which may not be + * null), and the origin node for the Xid is returned in *nodeid, if it's not + * null. */ bool TransactionIdGetCommitTsData(TransactionId xid, TimestampTz *ts, @@ -294,8 +296,7 @@ TransactionIdGetCommitTsData(TransactionId xid, TimestampTz *ts, TransactionIdPrecedes(xid, oldestCommitTs) || TransactionIdPrecedes(newestCommitTs, xid)) { - if (ts) - *ts = 0; + *ts = 0; if (nodeid) *nodeid = InvalidRepOriginId; return false; @@ -312,8 +313,7 @@ TransactionIdGetCommitTsData(TransactionId xid, TimestampTz *ts, LWLockAcquire(CommitTsLock, LW_SHARED); if (commitTsShared->xidLastCommit == xid) { - if (ts) - *ts = commitTsShared->dataLastCommit.time; + *ts = commitTsShared->dataLastCommit.time; if (nodeid) *nodeid = commitTsShared->dataLastCommit.nodeid; @@ -330,8 +330,7 @@ TransactionIdGetCommitTsData(TransactionId xid, TimestampTz *ts, SizeOfCommitTimestampEntry * entryno, SizeOfCommitTimestampEntry); - if (ts) - *ts = entry.time; + *ts = entry.time; if (nodeid) *nodeid = entry.nodeid; [parent: 19446280fce0]