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.
Showing
- src/backend/access/nbtree/nbtinsert.c 10 additions, 8 deletionssrc/backend/access/nbtree/nbtinsert.c
- src/backend/access/nbtree/nbtpage.c 85 additions, 37 deletionssrc/backend/access/nbtree/nbtpage.c
- src/backend/access/nbtree/nbtree.c 3 additions, 3 deletionssrc/backend/access/nbtree/nbtree.c
- src/backend/access/nbtree/nbtxlog.c 141 additions, 9 deletionssrc/backend/access/nbtree/nbtxlog.c
- src/include/access/nbtree.h 13 additions, 12 deletionssrc/include/access/nbtree.h
- src/include/access/xlog_internal.h 2 additions, 2 deletionssrc/include/access/xlog_internal.h
Loading
Please register or sign in to comment