Re: Old row version in hot chain become visible after a freeze
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Alvaro Herrera <alvherre@2ndquadrant.com>
Cc: "Wong, Yi Wen" <yiwong@amazon.com>,
Michael Paquier <michael.paquier@gmail.com>,
Peter Geoghegan <pg@bowt.ie>, "Wood, Dan" <hexpert@amazon.com>,
"pgsql-bugs@postgresql.org" <pgsql-bugs@postgresql.org>
Date: 2017-09-08T17:04:10Z
Lists: pgsql-bugs
Alvaro Herrera <alvherre@2ndquadrant.com> writes: > Wong, Yi Wen wrote: >> lazy_record_dead_tuple may fail to record the heap for later pruning >> for lazy_vacuum_heap if there is already a sufficiently large number of dead tuples >> in the array: > Hmm, ouch, good catch. > AFAICS this is a shouldn't-happen condition, since we bail out of the > loop pessimistically as soon as we would be over the array limit if the > next page were to be full of dead tuples (i.e., we never give the chance > for overflow to actually happen). So unless I misunderstand, this could > only fail if you give maint_work_mem smaller than necessary for one > pageful of dead tuples, which should be about 1800 bytes ... > If we wanted to be very sure about this we could add a test and perhaps > abort the vacuum, but I'm not sure it's worth the trouble. I think if we're going to depend on that, we should change the logic from "don't record tuple if no space" to "throw error on no space". regards, tom lane
Commits
-
Fix freezing of a dead HOT-updated tuple
- fb6de78a291b 9.5.10 landed
- d149aa762c05 9.3.20 landed
- 46c35116ae1a 10.0 landed
- 3a135bdb1b5e 9.6.6 landed
- 232c7cbcbbc6 9.4.15 landed
- 20b655224249 11.0 landed
-
Fix potential data corruption during freeze
- 31b8db8e6c1f 10.0 cited
-
Clarify the contract of partition_rbound_cmp().
- f1dae097f294 10.0 cited