mirror of
https://github.com/postgres/postgres.git
synced 2025-07-15 19:21:59 +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:
@ -712,6 +712,7 @@ do_analyze_rel(Relation onerel, VacuumParams *params,
|
||||
ivinfo.message_level = elevel;
|
||||
ivinfo.num_heap_tuples = onerel->rd_rel->reltuples;
|
||||
ivinfo.strategy = vac_strategy;
|
||||
ivinfo.heaprel = onerel;
|
||||
|
||||
stats = index_vacuum_cleanup(&ivinfo, NULL);
|
||||
|
||||
|
@ -148,6 +148,9 @@ struct ParallelVacuumState
|
||||
/* NULL for worker processes */
|
||||
ParallelContext *pcxt;
|
||||
|
||||
/* Parent Heap Relation */
|
||||
Relation heaprel;
|
||||
|
||||
/* Target indexes */
|
||||
Relation *indrels;
|
||||
int nindexes;
|
||||
@ -266,6 +269,7 @@ parallel_vacuum_init(Relation rel, Relation *indrels, int nindexes,
|
||||
pvs->nindexes = nindexes;
|
||||
pvs->will_parallel_vacuum = will_parallel_vacuum;
|
||||
pvs->bstrategy = bstrategy;
|
||||
pvs->heaprel = rel;
|
||||
|
||||
EnterParallelMode();
|
||||
pcxt = CreateParallelContext("postgres", "parallel_vacuum_main",
|
||||
@ -838,6 +842,7 @@ parallel_vacuum_process_one_index(ParallelVacuumState *pvs, Relation indrel,
|
||||
ivinfo.estimated_count = pvs->shared->estimated_count;
|
||||
ivinfo.num_heap_tuples = pvs->shared->reltuples;
|
||||
ivinfo.strategy = pvs->bstrategy;
|
||||
ivinfo.heaprel = pvs->heaprel;
|
||||
|
||||
/* Update error traceback information */
|
||||
pvs->indname = pstrdup(RelationGetRelationName(indrel));
|
||||
@ -1007,6 +1012,7 @@ parallel_vacuum_main(dsm_segment *seg, shm_toc *toc)
|
||||
pvs.dead_items = dead_items;
|
||||
pvs.relnamespace = get_namespace_name(RelationGetNamespace(rel));
|
||||
pvs.relname = pstrdup(RelationGetRelationName(rel));
|
||||
pvs.heaprel = rel;
|
||||
|
||||
/* These fields will be filled during index vacuum or cleanup */
|
||||
pvs.indname = NULL;
|
||||
|
Reference in New Issue
Block a user