pgsql: Reduce spurious Hot Standby conflicts from never-visible records

From: Simon Riggs <simon(at)2ndQuadrant(dot)com>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Reduce spurious Hot Standby conflicts from never-visible records
Date: 2010-12-09 09:45:11
Message-ID: E1PQd3n-0005gY-Sw@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Reduce spurious Hot Standby conflicts from never-visible records.
Hot Standby conflicts only with tuples that were visible at
some point. So ignore tuples from aborted transactions or for
tuples updated/deleted during the inserting transaction when
generating the conflict transaction ids.

Following detailed analysis and test case by Noah Misch.
Original report covered btree delete records, correctly observed
by Heikki Linnakangas that this applies to other cases also.
Fix covers all sources of cleanup records via common code.

Branch
------
master

Details
-------
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=b9075a6d2f9b07a00262a670dd60272904c79dce

Modified Files
--------------
src/backend/access/heap/heapam.c | 33 +++++++++++++++++++++++++--------
src/backend/access/heap/pruneheap.c | 1 -
src/backend/access/nbtree/nbtxlog.c | 19 +++++--------------
3 files changed, 30 insertions(+), 23 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Simon Riggs 2010-12-09 10:22:35 pgsql: Self review of previous patch. Fix assumption that xmax >= xmin.
Previous Message Tom Lane 2010-12-09 01:02:29 pgsql: Force default wal_sync_method to be fdatasync on Linux.