I pushed my proposed fix all the way back to 9.3. As I said earlier, I couldn't detect a bug of the sort you describe: a) as I argued in my previous email, no tuple earlier than the relfreezexid should survive, because 9.2 did remove those when freezing the table. b) One thing we could do but do not, is detect the case where there is an Xmax that is newer than the cutoff_xid but comes from before the pg_upgrade. We don't freeze it in that case. But we do return it as totally_frozen=false, so it'll be frozen later anyway -- nothing bad happens. I don't think this is worth tinkering with. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services