mirror of
https://github.com/postgres/postgres.git
synced 2025-07-31 22:04:40 +03:00
Revert bogus fixes of HOT-freezing bug
It turns out we misdiagnosed what the real problem was. Revert the previous changes, because they may have worse consequences going forward. A better fix is forthcoming. The simplistic test case is kept, though disabled. Discussion: https://postgr.es/m/20171102112019.33wb7g5wp4zpjelu@alap3.anarazel.de
This commit is contained in:
@ -2029,17 +2029,17 @@ lazy_record_dead_tuple(LVRelStats *vacrelstats,
|
||||
ItemPointer itemptr)
|
||||
{
|
||||
/*
|
||||
* The array must never overflow, since we rely on all deletable tuples
|
||||
* being removed; inability to remove a tuple might cause an old XID to
|
||||
* persist beyond the freeze limit, which could be disastrous later on.
|
||||
* The array shouldn't overflow under normal behavior, but perhaps it
|
||||
* could if we are given a really small maintenance_work_mem. In that
|
||||
* case, just forget the last few tuples (we'll get 'em next time).
|
||||
*/
|
||||
if (vacrelstats->num_dead_tuples >= vacrelstats->max_dead_tuples)
|
||||
elog(ERROR, "dead tuple array overflow");
|
||||
|
||||
vacrelstats->dead_tuples[vacrelstats->num_dead_tuples] = *itemptr;
|
||||
vacrelstats->num_dead_tuples++;
|
||||
pgstat_progress_update_param(PROGRESS_VACUUM_NUM_DEAD_TUPLES,
|
||||
vacrelstats->num_dead_tuples);
|
||||
if (vacrelstats->num_dead_tuples < vacrelstats->max_dead_tuples)
|
||||
{
|
||||
vacrelstats->dead_tuples[vacrelstats->num_dead_tuples] = *itemptr;
|
||||
vacrelstats->num_dead_tuples++;
|
||||
pgstat_progress_update_param(PROGRESS_VACUUM_NUM_DEAD_TUPLES,
|
||||
vacrelstats->num_dead_tuples);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user