OSDN Git Service

Derive latestRemovedXid for btree deletes by reading heap pages. The
authorSimon Riggs <simon@2ndQuadrant.com>
Sun, 28 Mar 2010 09:27:02 +0000 (09:27 +0000)
committerSimon Riggs <simon@2ndQuadrant.com>
Sun, 28 Mar 2010 09:27:02 +0000 (09:27 +0000)
commita760893dbda9934e287789d54bbd3c4ca3914ce0
treedc27a0fd902264a9d9a6f882edca421df9ef255f
parent59292f28cace8c0d4b038cadbb127b440e3a7815
Derive latestRemovedXid for btree deletes by reading heap pages. The
WAL record for btree delete contains a list of tids, even when backup
blocks are present. We follow the tids to their heap tuples, taking
care to follow LP_REDIRECT tuples. We ignore LP_DEAD tuples on the
understanding that they will always have xmin/xmax earlier than any
LP_NORMAL tuples referred to by killed index tuples. Iff all tuples
are LP_DEAD we return InvalidTransactionId. The heap relfilenode is
added to the WAL record, requiring API changes to pass down the heap
Relation. XLOG_PAGE_MAGIC updated.
src/backend/access/nbtree/nbtinsert.c
src/backend/access/nbtree/nbtpage.c
src/backend/access/nbtree/nbtree.c
src/backend/access/nbtree/nbtxlog.c
src/include/access/nbtree.h
src/include/access/xlog_internal.h