summaryrefslogtreecommitdiff
path: root/src/backend/commands/vacuumlazy.c
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2017-11-02 15:51:05 +0100
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2017-11-02 15:51:41 +0100
commitc6764eb3aea63f3f95582bd660785e2b0d4439f9 (patch)
tree1a3a264ffc810832675c809dfbc4a25724ba5309 /src/backend/commands/vacuumlazy.c
parentd8c435e1743773eba4e36498479ca6aef28a2d70 (diff)
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
Diffstat (limited to 'src/backend/commands/vacuumlazy.c')
-rw-r--r--src/backend/commands/vacuumlazy.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c
index 172d213fdb8..6587db77acf 100644
--- a/src/backend/commands/vacuumlazy.c
+++ b/src/backend/commands/vacuumlazy.c
@@ -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);
+ }
}
/*