Re: Old row version in hot chain become visible after a freeze

Alvaro Herrera <alvherre@alvh.no-ip.org>

From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: "Wong, Yi Wen" <yiwong@amazon.com>
Cc: Michael Paquier <michael.paquier@gmail.com>, Peter Geoghegan <pg@bowt.ie>, "Wood, Dan" <hexpert@amazon.com>, "pgsql-bugs@postgresql.org" <pgsql-bugs@postgresql.org>, Andres Freund <andres@anarazel.de>
Date: 2017-09-28T16:47:13Z
Lists: pgsql-bugs
Alvaro Herrera wrote:
> Okay, I have pushed this patch now backpatched to all branches since
> 9.3, after staring at this code for way too long.

By the way, as a side-effect of this commit, heapam.c has gone from
76.6% covered to 78.6% covered; in particular, FreezeMultiXactId() has
gone from absolutely not touched at all to having about half its lines
covered; also some newly covered paths in heap_prepare_freeze_tuple.
It's not a huge increase, but it's a start.  IMO we need some more test
cases to cover a few more branches here ...

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


Commits

  1. Fix freezing of a dead HOT-updated tuple

  2. Fix potential data corruption during freeze

  3. Clarify the contract of partition_rbound_cmp().