mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-11 19:20:40 +08:00
Adjust cutoff points in newly-added sanity tests.
Per recommendation from Andres.
This commit is contained in:
parent
e7984cca06
commit
4ee95870de
@ -745,13 +745,13 @@ vac_update_relstats(Relation relation,
|
|||||||
* which case we don't want to forget the work it already did. However,
|
* which case we don't want to forget the work it already did. However,
|
||||||
* if the stored relfrozenxid is "in the future", then it must be corrupt
|
* if the stored relfrozenxid is "in the future", then it must be corrupt
|
||||||
* and it seems best to overwrite it with the cutoff we used this time.
|
* and it seems best to overwrite it with the cutoff we used this time.
|
||||||
* See vac_update_datfrozenxid() concerning what we consider to be "in the
|
* This should match vac_update_datfrozenxid() concerning what we consider
|
||||||
* future".
|
* to be "in the future".
|
||||||
*/
|
*/
|
||||||
if (TransactionIdIsNormal(frozenxid) &&
|
if (TransactionIdIsNormal(frozenxid) &&
|
||||||
pgcform->relfrozenxid != frozenxid &&
|
pgcform->relfrozenxid != frozenxid &&
|
||||||
(TransactionIdPrecedes(pgcform->relfrozenxid, frozenxid) ||
|
(TransactionIdPrecedes(pgcform->relfrozenxid, frozenxid) ||
|
||||||
TransactionIdPrecedes(GetOldestXmin(true, true),
|
TransactionIdPrecedes(ReadNewTransactionId(),
|
||||||
pgcform->relfrozenxid)))
|
pgcform->relfrozenxid)))
|
||||||
{
|
{
|
||||||
pgcform->relfrozenxid = frozenxid;
|
pgcform->relfrozenxid = frozenxid;
|
||||||
@ -762,7 +762,7 @@ vac_update_relstats(Relation relation,
|
|||||||
if (MultiXactIdIsValid(minmulti) &&
|
if (MultiXactIdIsValid(minmulti) &&
|
||||||
pgcform->relminmxid != minmulti &&
|
pgcform->relminmxid != minmulti &&
|
||||||
(MultiXactIdPrecedes(pgcform->relminmxid, minmulti) ||
|
(MultiXactIdPrecedes(pgcform->relminmxid, minmulti) ||
|
||||||
MultiXactIdPrecedes(GetOldestMultiXactId(), pgcform->relminmxid)))
|
MultiXactIdPrecedes(ReadNextMultiXactId(), pgcform->relminmxid)))
|
||||||
{
|
{
|
||||||
pgcform->relminmxid = minmulti;
|
pgcform->relminmxid = minmulti;
|
||||||
dirty = true;
|
dirty = true;
|
||||||
@ -803,8 +803,8 @@ vac_update_datfrozenxid(void)
|
|||||||
SysScanDesc scan;
|
SysScanDesc scan;
|
||||||
HeapTuple classTup;
|
HeapTuple classTup;
|
||||||
TransactionId newFrozenXid;
|
TransactionId newFrozenXid;
|
||||||
TransactionId lastSaneFrozenXid;
|
|
||||||
MultiXactId newMinMulti;
|
MultiXactId newMinMulti;
|
||||||
|
TransactionId lastSaneFrozenXid;
|
||||||
MultiXactId lastSaneMinMulti;
|
MultiXactId lastSaneMinMulti;
|
||||||
bool bogus = false;
|
bool bogus = false;
|
||||||
bool dirty = false;
|
bool dirty = false;
|
||||||
@ -815,13 +815,21 @@ vac_update_datfrozenxid(void)
|
|||||||
* committed pg_class entries for new tables; see AddNewRelationTuple().
|
* committed pg_class entries for new tables; see AddNewRelationTuple().
|
||||||
* So we cannot produce a wrong minimum by starting with this.
|
* So we cannot produce a wrong minimum by starting with this.
|
||||||
*/
|
*/
|
||||||
newFrozenXid = lastSaneFrozenXid = GetOldestXmin(true, true);
|
newFrozenXid = GetOldestXmin(true, true);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Similarly, initialize the MultiXact "min" with the value that would be
|
* Similarly, initialize the MultiXact "min" with the value that would be
|
||||||
* used on pg_class for new tables. See AddNewRelationTuple().
|
* used on pg_class for new tables. See AddNewRelationTuple().
|
||||||
*/
|
*/
|
||||||
newMinMulti = lastSaneMinMulti = GetOldestMultiXactId();
|
newMinMulti = GetOldestMultiXactId();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Identify the latest relfrozenxid and relminmxid values that we could
|
||||||
|
* validly see during the scan. These are conservative values, but it's
|
||||||
|
* not really worth trying to be more exact.
|
||||||
|
*/
|
||||||
|
lastSaneFrozenXid = ReadNewTransactionId();
|
||||||
|
lastSaneMinMulti = ReadNextMultiXactId();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We must seqscan pg_class to find the minimum Xid, because there is no
|
* We must seqscan pg_class to find the minimum Xid, because there is no
|
||||||
|
Loading…
Reference in New Issue
Block a user