v23--v24-diff-for-0004.patch
text/x-patch
Filename: v23--v24-diff-for-0004.patch
Type: text/x-patch
Part: 5
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v23
Subject: fixes for 0004
| File | + | − |
|---|---|---|
| src/backend/commands/vacuumparallel.c | 8 | 16 |
| src/backend/postmaster/autovacuum.c | 2 | 2 |
| src/include/postmaster/autovacuum.h | 1 | 1 |
| src/test/modules/test_autovacuum/meson.build | 1 | 1 |
| src/test/modules/test_autovacuum/t/001_parallel_autovacuum.pl | 2 | 2 |
| src/test/modules/test_autovacuum/test_autovacuum.c | 2 | 6 |
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