aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2023-04-01 20:12:26 -0700
committerAndres Freund <andres@anarazel.de>2023-04-01 20:18:29 -0700
commit61b313e47eb987682441c675724c22bf4363c9c4 (patch)
treed3cc190f131f23fa00e4d25edcff6d06b1499498 /src/backend/commands
parenta88a18b1250b9e6b40536e4dec04d32d655b8140 (diff)
downloadpostgresql-61b313e47eb987682441c675724c22bf4363c9c4.tar.gz
postgresql-61b313e47eb987682441c675724c22bf4363c9c4.zip
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
Diffstat (limited to 'src/backend/commands')
-rw-r--r--src/backend/commands/analyze.c1
-rw-r--r--src/backend/commands/vacuumparallel.c6
2 files changed, 7 insertions, 0 deletions
diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c
index bec9c8b4277..2b404767bb2 100644
--- a/src/backend/commands/analyze.c
+++ b/src/backend/commands/analyze.c
@@ -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);
diff --git a/src/backend/commands/vacuumparallel.c b/src/backend/commands/vacuumparallel.c
index bcd40c80a18..2cdbd182b69 100644
--- a/src/backend/commands/vacuumparallel.c
+++ b/src/backend/commands/vacuumparallel.c
@@ -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;