From d6add90f5146fe0acae78fbcf72d9559b21c9305 Mon Sep 17 00:00:00 2001
From: Daniil Davidov <d.davydov@postgrespro.ru>
Date: Wed, 4 Mar 2026 13:39:03 +0700
Subject: [PATCH] fixes for 0004

---
 src/backend/commands/vacuumparallel.c         | 24 +++++++------------
 src/backend/postmaster/autovacuum.c           |  4 ++--
 src/include/postmaster/autovacuum.h           |  2 +-
 src/test/modules/test_autovacuum/meson.build  |  2 +-
 .../t/001_parallel_autovacuum.pl              |  4 ++--
 .../modules/test_autovacuum/test_autovacuum.c |  8 ++-----
 6 files changed, 16 insertions(+), 28 deletions(-)

diff --git a/src/backend/commands/vacuumparallel.c b/src/backend/commands/vacuumparallel.c
index 828844ffc67..414a465d99f 100644
--- a/src/backend/commands/vacuumparallel.c
+++ b/src/backend/commands/vacuumparallel.c
@@ -654,6 +654,14 @@ parallel_vacuum_update_shared_delay_params(void)
 	VacuumUpdateCosts();
 
 	shared_params_generation_local = params_generation;
+
+	elog(DEBUG2,
+		 "parallel autovacuum worker cost params: cost_limit=%d, cost_delay=%g, cost_page_miss=%d, cost_page_dirty=%d, cost_page_hit=%d",
+		 vacuum_cost_limit,
+		 vacuum_cost_delay,
+		 VacuumCostPageMiss,
+		 VacuumCostPageDirty,
+		 VacuumCostPageHit);
 }
 
 /*
@@ -1311,22 +1319,6 @@ parallel_vacuum_main(dsm_segment *seg, shm_toc *toc)
 	/* Process indexes to perform vacuum/cleanup */
 	parallel_vacuum_process_safe_indexes(&pvs);
 
-#ifdef USE_INJECTION_POINTS
-	/*
-	 * If we are parallel autovacuum worker, we can consume delay parameters
-	 * during index processing (via vacuum_delay_point call). This logging
-	 * allows tests to ensure this.
-	 */
-	if (shared->is_autovacuum)
-		elog(DEBUG2,
-			 "parallel autovacuum worker cost params: cost_limit=%d, cost_delay=%g, cost_page_miss=%d, cost_page_dirty=%d, cost_page_hit=%d",
-			 vacuum_cost_limit,
-			 vacuum_cost_delay,
-			 VacuumCostPageMiss,
-			 VacuumCostPageDirty,
-			 VacuumCostPageHit);
-#endif
-
 	/* Report buffer/WAL usage during parallel execution */
 	buffer_usage = shm_toc_lookup(toc, PARALLEL_VACUUM_KEY_BUFFER_USAGE, false);
 	wal_usage = shm_toc_lookup(toc, PARALLEL_VACUUM_KEY_WAL_USAGE, false);
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index ee8d9ba0428..1c51210883e 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -3487,10 +3487,10 @@ AutoVacuumReleaseAllParallelWorkers(void)
 /*
  * Get number of free autovacuum parallel workers.
  */
-uint32
+int32
 AutoVacuumGetFreeParallelWorkers(void)
 {
-	uint32		nfree_workers;
+	int32		nfree_workers;
 
 	LWLockAcquire(AutovacuumLock, LW_SHARED);
 	nfree_workers = AutoVacuumShmem->av_freeParallelWorkers;
diff --git a/src/include/postmaster/autovacuum.h b/src/include/postmaster/autovacuum.h
index 52be260e15f..d60010a43b4 100644
--- a/src/include/postmaster/autovacuum.h
+++ b/src/include/postmaster/autovacuum.h
@@ -66,7 +66,7 @@ extern bool AutoVacuumRequestWork(AutoVacuumWorkItemType type,
 extern void	AutoVacuumReserveParallelWorkers(int *nworkers);
 extern void AutoVacuumReleaseParallelWorkers(int nworkers);
 extern void AutoVacuumReleaseAllParallelWorkers(void);
-extern uint32 AutoVacuumGetFreeParallelWorkers(void);
+extern int32 AutoVacuumGetFreeParallelWorkers(void);
 
 /* shared memory stuff */
 extern Size AutoVacuumShmemSize(void);
diff --git a/src/test/modules/test_autovacuum/meson.build b/src/test/modules/test_autovacuum/meson.build
index 75b24814b13..969af8bd52a 100644
--- a/src/test/modules/test_autovacuum/meson.build
+++ b/src/test/modules/test_autovacuum/meson.build
@@ -1,4 +1,4 @@
-# Copyright (c) 2024-2025, PostgreSQL Global Development Group
+# Copyright (c) 2024-2026, PostgreSQL Global Development Group
 
 test_autovacuum_sources = files(
   'test_autovacuum.c',
diff --git a/src/test/modules/test_autovacuum/t/001_parallel_autovacuum.pl b/src/test/modules/test_autovacuum/t/001_parallel_autovacuum.pl
index edfbde73aac..7f8b5a7b4d3 100644
--- a/src/test/modules/test_autovacuum/t/001_parallel_autovacuum.pl
+++ b/src/test/modules/test_autovacuum/t/001_parallel_autovacuum.pl
@@ -40,7 +40,6 @@ $node->append_conf('postgresql.conf', qq{
 	max_parallel_maintenance_workers = 20
 	autovacuum_max_parallel_workers = 20
 	log_min_messages = debug2
-	log_autovacuum_min_duration = 0
 	autovacuum_naptime = '1s'
 	min_parallel_index_scan_size = 0
 	shared_preload_libraries=test_autovacuum
@@ -70,7 +69,8 @@ $node->safe_psql('postgres', qq{
 	CREATE TABLE test_autovac (
 		id SERIAL PRIMARY KEY,
 		col_1 INTEGER,  col_2 INTEGER,  col_3 INTEGER,  col_4 INTEGER
-	) WITH (autovacuum_parallel_workers = $autovacuum_parallel_workers);
+	) WITH (autovacuum_parallel_workers = $autovacuum_parallel_workers,
+			log_autovacuum_min_duration = 0);
 
 	INSERT INTO test_autovac
 	SELECT
diff --git a/src/test/modules/test_autovacuum/test_autovacuum.c b/src/test/modules/test_autovacuum/test_autovacuum.c
index 195a6149a5d..dd5c839e851 100644
--- a/src/test/modules/test_autovacuum/test_autovacuum.c
+++ b/src/test/modules/test_autovacuum/test_autovacuum.c
@@ -23,13 +23,9 @@ PG_FUNCTION_INFO_V1(get_parallel_autovacuum_free_workers);
 Datum
 get_parallel_autovacuum_free_workers(PG_FUNCTION_ARGS)
 {
-	uint32		nfree_workers;
-
-#ifndef USE_INJECTION_POINTS
-	ereport(ERROR, errmsg("injection points not supported"));
-#endif
+	int32		nfree_workers;
 
 	nfree_workers = AutoVacuumGetFreeParallelWorkers();
 
-	PG_RETURN_UINT32(nfree_workers);
+	PG_RETURN_INT32(nfree_workers);
 }
-- 
2.43.0

