Some time ago, I changed GetOldestXmin() to ignore procs in other databases resulting in a potentially later xmin.
GetSnapshotData() was not touched when that happened, even though the comments say "...This is the same computation done by GetOldestXmin(true, true)." The transam/README file says it stronger "GetSnapshotData also performs an oldest-xmin calculation (which had better match GetOldestXmin's)". Doh. As a result, VACUUM ignores procs in other databases, whereas HOT does not. That means we aren't cleaning up as much as we could do when running multiple databases. If its OK for VACUUM, then it must be OK for HOT cleanup also. Attached patch ignores procs in other databases during GetSnapshotData() when IsMVCCSnapshot(), using similar coding to GetOldestXmin(). Any doubters? I suggest this is backpatched a few releases. -- Simon Riggs http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
fix_getsnapshotdata.v1.patch
Description: Binary data
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers