On 4 December 2017 at 23:15, Nikhil Sontakke <nikh...@2ndquadrant.com> wrote:
> PFA, latest patch for this functionality. > This patch contains the following changes as compared to the earlier patch: > > - Fixed a bunch of typos and comments > > - Modified HeapTupleSatisfiesVacuum to return HEAPTUPLE_RECENTLY_DEAD > if the transaction id is newer than OldestXmin. Doing this only for > CATALOG tables (htup->t_tableOid < (Oid) FirstNormalObjectId). > Because logical decoding supports user-catalog relations, we need to use the same sort of logical that GetOldestXmin uses instead of a simple oid-range check. See RelationIsAccessibleInLogicalDecoding() and the user_catalog_table reloption. Otherwise pseudo-catalogs used by logical decoding output plugins could still suffer issues with needed tuples getting vacuumed, though only if the txn being decoded made changes to those tables than ROLLBACKed. It's a pretty tiny corner case for decoding of 2pc but a bigger one when we're addressing streaming decoding. Otherwise I'm really, really happy with how this is progressing and want to find time to play with it. -- Craig Ringer http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services