From fa5b54091afd3335411bbf52c36ef633fc7052b3 Mon Sep 17 00:00:00 2001 From: Baji Shaik Date: Sun, 25 Oct 2026 10:51:14 -0500 Subject: [PATCH] Pass heap tuple counts to parallel vacuum as double parallel_vacuum_bulkdel_all_indexes() and parallel_vacuum_cleanup_all_indexes() took the heap tuple count as long, although callers pass a double and it is stored as a double for the index AMs. Where long is 32 bits, as on Windows, counts above LONG_MAX don't fit, so index AMs could get a wrong num_heap_tuples only when vacuuming in parallel. Author: Baji Shaik --- src/backend/commands/vacuumparallel.c | 4 ++-- src/include/commands/vacuum.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/vacuumparallel.c b/src/backend/commands/vacuumparallel.c index c29f62c5a99..339d876d6e2 100644 --- a/src/backend/commands/vacuumparallel.c +++ b/src/backend/commands/vacuumparallel.c @@ -599,7 +599,7 @@ parallel_vacuum_reset_dead_items(ParallelVacuumState *pvs) * Do parallel index bulk-deletion with parallel workers. */ void -parallel_vacuum_bulkdel_all_indexes(ParallelVacuumState *pvs, long num_table_tuples, +parallel_vacuum_bulkdel_all_indexes(ParallelVacuumState *pvs, double num_table_tuples, int num_index_scans, PVWorkerStats *wstats) { Assert(!IsParallelWorker()); @@ -618,7 +618,7 @@ parallel_vacuum_bulkdel_all_indexes(ParallelVacuumState *pvs, long num_table_tup * Do parallel index cleanup with parallel workers. */ void -parallel_vacuum_cleanup_all_indexes(ParallelVacuumState *pvs, long num_table_tuples, +parallel_vacuum_cleanup_all_indexes(ParallelVacuumState *pvs, double num_table_tuples, int num_index_scans, bool estimated_count, PVWorkerStats *wstats) { diff --git a/src/include/commands/vacuum.h b/src/include/commands/vacuum.h index 89fa1fcd261..b28c876435f 100644 --- a/src/include/commands/vacuum.h +++ b/src/include/commands/vacuum.h @@ -422,11 +422,11 @@ extern TidStore *parallel_vacuum_get_dead_items(ParallelVacuumState *pvs, VacDeadItemsInfo **dead_items_info_p); extern void parallel_vacuum_reset_dead_items(ParallelVacuumState *pvs); extern void parallel_vacuum_bulkdel_all_indexes(ParallelVacuumState *pvs, - long num_table_tuples, + double num_table_tuples, int num_index_scans, PVWorkerStats *wstats); extern void parallel_vacuum_cleanup_all_indexes(ParallelVacuumState *pvs, - long num_table_tuples, + double num_table_tuples, int num_index_scans, bool estimated_count, PVWorkerStats *wstats); -- 2.54.0 (Apple Git-157)