From 80c612cbfffc1115a701f4ef35953608de678ca1 Mon Sep 17 00:00:00 2001 From: Daniel Gustafsson Date: Tue, 28 Apr 2026 23:48:30 +0200 Subject: [PATCH v2 1/8] Prevent pg_enable/disable_data_checksums() on standby These functions missed a RecoveryInProgress() check, allowing them to be called on a hot standby. Enabling, or disabling, checksums on the standby only would cause the cluster to get out of sync and replaying checksum transitions to fail. Author: Satyanarayana Narlapuram Discussion: https://postgr.es/m/CAHg+QDfRk4-S7DMmdbXJnQ-xF=sUpMAKuh8b83ObLqYVKx5QLA@mail.gmail.com --- src/backend/postmaster/datachecksum_state.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/backend/postmaster/datachecksum_state.c b/src/backend/postmaster/datachecksum_state.c index 5556a9ca893..ea102086144 100644 --- a/src/backend/postmaster/datachecksum_state.c +++ b/src/backend/postmaster/datachecksum_state.c @@ -487,6 +487,8 @@ AbsorbDataChecksumsBarrier(ProcSignalBarrierType barrier) Datum disable_data_checksums(PG_FUNCTION_ARGS) { + PreventCommandDuringRecovery("pg_disable_data_checksums()"); + if (!superuser()) ereport(ERROR, errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), @@ -507,6 +509,8 @@ enable_data_checksums(PG_FUNCTION_ARGS) int cost_delay = PG_GETARG_INT32(0); int cost_limit = PG_GETARG_INT32(1); + PreventCommandDuringRecovery("pg_enable_data_checksums()"); + if (!superuser()) ereport(ERROR, errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), -- 2.39.3 (Apple Git-146)