mirror of
https://github.com/postgres/postgres.git
synced 2025-11-09 06:21:09 +03:00
Pass down table relation into more index relation functions
This is done in preparation for logical decoding on standby, which needs to include whether visibility affecting WAL records are about a (user) catalog table. Which is only known for the table, not the indexes. It's also nice to be able to pass the heap relation to GlobalVisTestFor() in vacuumRedirectAndPlaceholder(). Author: "Drouvot, Bertrand" <bertranddrouvot.pg@gmail.com> Discussion: https://postgr.es/m/21b700c3-eecf-2e05-a699-f8c78dd31ec7@gmail.com
This commit is contained in:
@@ -8268,7 +8268,7 @@ bottomup_sort_and_shrink(TM_IndexDeleteOp *delstate)
|
||||
* update the heap page's LSN.
|
||||
*/
|
||||
XLogRecPtr
|
||||
log_heap_visible(RelFileLocator rlocator, Buffer heap_buffer, Buffer vm_buffer,
|
||||
log_heap_visible(Relation rel, Buffer heap_buffer, Buffer vm_buffer,
|
||||
TransactionId snapshotConflictHorizon, uint8 vmflags)
|
||||
{
|
||||
xl_heap_visible xlrec;
|
||||
|
||||
@@ -822,9 +822,14 @@ heapam_relation_copy_for_cluster(Relation OldHeap, Relation NewHeap,
|
||||
*multi_cutoff);
|
||||
|
||||
|
||||
/* Set up sorting if wanted */
|
||||
/*
|
||||
* Set up sorting if wanted. NewHeap is being passed to
|
||||
* tuplesort_begin_cluster(), it could have been OldHeap too. It does not
|
||||
* really matter, as the goal is to have a heap relation being passed to
|
||||
* _bt_log_reuse_page() (which should not be called from this code path).
|
||||
*/
|
||||
if (use_sort)
|
||||
tuplesort = tuplesort_begin_cluster(oldTupDesc, OldIndex,
|
||||
tuplesort = tuplesort_begin_cluster(oldTupDesc, OldIndex, NewHeap,
|
||||
maintenance_work_mem,
|
||||
NULL, TUPLESORT_NONE);
|
||||
else
|
||||
|
||||
@@ -2710,6 +2710,7 @@ lazy_vacuum_one_index(Relation indrel, IndexBulkDeleteResult *istat,
|
||||
ivinfo.message_level = DEBUG2;
|
||||
ivinfo.num_heap_tuples = reltuples;
|
||||
ivinfo.strategy = vacrel->bstrategy;
|
||||
ivinfo.heaprel = vacrel->rel;
|
||||
|
||||
/*
|
||||
* Update error traceback information.
|
||||
@@ -2759,6 +2760,7 @@ lazy_cleanup_one_index(Relation indrel, IndexBulkDeleteResult *istat,
|
||||
|
||||
ivinfo.num_heap_tuples = reltuples;
|
||||
ivinfo.strategy = vacrel->bstrategy;
|
||||
ivinfo.heaprel = vacrel->rel;
|
||||
|
||||
/*
|
||||
* Update error traceback information.
|
||||
|
||||
@@ -288,8 +288,7 @@ visibilitymap_set(Relation rel, BlockNumber heapBlk, Buffer heapBuf,
|
||||
if (XLogRecPtrIsInvalid(recptr))
|
||||
{
|
||||
Assert(!InRecovery);
|
||||
recptr = log_heap_visible(rel->rd_locator, heapBuf, vmBuf,
|
||||
cutoff_xid, flags);
|
||||
recptr = log_heap_visible(rel, heapBuf, vmBuf, cutoff_xid, flags);
|
||||
|
||||
/*
|
||||
* If data checksums are enabled (or wal_log_hints=on), we
|
||||
|
||||
Reference in New Issue
Block a user